Sql

Insert

Zend\Db\Sql\Sqlクラスのinsertメソッドから呼び出される。

基本的な利用方法

$sql = new Zend\Db\Sql\Sql($adapter);
$insert=$sql->insert();
$insert->into("test");
$insert->values(array("id"=>"1","name"=>"hoge"));
echo $sql->getSqlStringForSqlObject($insert);

 INSERT INTO `test` (`id`, `name`) VALUES ('1', 'hoge')

コンストラクタ

引数
string|TableIdentifier $table

テーブル名を指定する、intoメソッドが優先される

php){$insert=$sql->insert("test"

intoメソッド

引数
string|TableIdentifier $table

テーブル名を指定する

php){$insert->into("test"

columns

引数
array $columns

カラム名を指定する。
Zend 2.3現在、columnsメソッドより後にvaluesメソッドを呼び出し、かつ第二引数にself::VALUES_SETを設定するか第二引数を省略した場合、columns設定値が消失する

$insert->columns(array("id", "name", "value"));

values

引数
array|Select $values
string $flag VALUES_MERGE|VALUES_SET を指定、デフォルトはVALUES_SET

Insertする値の設定を行う

$insert->values(array("id"=>"1","name"=>"hoge"));

select

引数
Select $select

valuesメソッドが呼び出される。以下と全く同じである。

php){$insert->values($select

getRawState

引数
string $key

table名、columns設定値、values設定値を返す。

// テーブル情報を返す
$insert->getRawState("table");
// カラム名を返す
$insert->getRawState("columns");
// values値を返す
$insert->getRawState("values");
// 上記のすべてを連想配列で返す
$insert->getRawState();

Select

Zend\Db\Sql\Sqlクラスのselectメソッドから呼び出される。

基本的な利用方法

$sql = new Zend\Db\Sql\Sql($adapter);
$select=$sql->select();
$select->from("test");
$select->columns(array("id"=>"rev_id", "name"=>"rev_name", "value"=>"rev_value"));
$select->where(array("name"=>"yamada", "value > 100"));
$select->limit(1);
echo $sql->getSqlStringForSqlObject($select);

 SELECT `test`.`rev_id` AS `id`, `test`.`rev_name` AS `name`, `test`.`rev_value` AS `value` FROM `test` WHERE `name` = 'yamada' AND value > 100 LIMIT 1

コンストラクタ

引数
null|string|array|TableIdentifier $table

テーブル名を指定する
ここで指定するとread onlyになり、fromから指定できなくなる

from

引数
string|array|TableIdentifier $table

テーブル名を指定する
コンストラクタで指定した場合、指定できない

quantifier

引数
string|Expression $quantifier DISTINCT|ALL

DISTINCT属性を設定するか。

columns

引数
array $columns

selectするカラム名を指定する
連想配列の場合、key値がエイリアス名になる。

php){$select->columns(array("*")
 `test`.*
 "value")
 `test`.`id` AS `id`, `test`.`name` AS `name`, `test`.`value` AS `value`
 "value"=>"rev_value")
 `test`.`rev_id` AS `id`, `test`.`rev_name` AS `name`, `test`.`rev_value` AS `value`

join

引数
string|array $name
string $on
string|array $columns
string $type JOIN_*の中から一つ

結合設定
JOIN_INNER、JOIN_OUTER、JOIN_LEFT、JOIN_RIGHTの4種類が指定可能

 Zend\Db\Sql\Select::JOIN_LEFT
 `test2`.* FROM `test` LEFT JOIN `test2` ON `test`.`id` = `test2`.`id`
 Zend\Db\Sql\Select::JOIN_LEFT
 `test2`.`id` AS `id`, `test2`.`name` AS `name`, `test2`.`age` AS `age` FROM `test` LEFT JOIN `test2` ON `test`.`id` = `test2`.`id`

where

引数
Where|\Closure|string|array|Predicate\PredicateInterface $predicate
string $combination Predicate\PredicateSetで定義されている OP_* の中から一つ

Where句を設定

 "name"=>"yamada")
 WHERE `id` = '1' AND `name` = 'yamada'
 Zend\Db\Sql\Predicate\PredicateSet::OP_OR
 WHERE `id` = '1' OR `name` = 'yamada'

Predicate\PredicateInterface

$nest = $select->where->nest();
	$nest->equalTo("name", "yamada");
	$nest->OR->equalTo("age", "20");
$nest->unnest();

 WHERE (`name` = 'yamada' OR `age` = '20')
$nest = $select->where->nest();
	$nest2_1 = $nest->nest();
		$nest2_1->equalTo("name", "yamada");
		$nest2_1->OR->equalTo("name", "tanaka");
	$nest2_1->unnest();
	$nest2_2 = $nest->AND->nest();
		$nest2_2->equalTo("age", "10");
		$nest2_2->OR->equalTo("age", "20");
	$nest2_2->unnest();
$nest->unnest();

 WHERE ((`name` = 'yamada' OR `name` = 'tanaka') AND (`age` = '10' OR `age` = '20'))
 "20"
 WHERE (`name` = 'yamada' OR `age` = '20')
$select->where->NEST
	->NEST
		->equalTo("name", "yamada")
		->OR->equalTo("name", "tanaka")
	->UNNEST
	->AND->NEST
		->equalTo("age", "10")
		->OR->equalTo("age", "20")
	->UNNEST
->UNNEST;

 WHERE ((`name` = 'yamada' OR `name` = 'tanaka') AND (`age` = '10' OR `age` = '20'))

group

引数|string|array

グループ設定

php){$select->group("name"
 GROUP BY `name`

having

引数
Where|\Closure|string|array $predicate
string $combination One of the OP_* constants from Predicate\PredicateSet
 "weight"=>20)
 HAVING `age` = '10' AND `weight` = '20'

order

引数
string|array $order

オーダー設定

php){$select->order("name DESC"
 ORDER BY `name` DESC
php){$select->order("name ASC"
 ORDER BY `name` ASC

limit

引数
int $limit

Limit設定

php){$select->limit(1
 LIMIT 1

offset

引数
int $offset

Offset設定

php){$select->offset(3
 OFFSET 3

combine

引数
Select $select
string $type
string $modifier

Delete

Zend\Db\Sql\Sqlクラスのdeleteメソッドから呼び出される。

基本的な利用方法

コンストラクタ

引数
null|string|TableIdentifier $table

テーブル名を指定する、fromメソッドが優先される

from

引数
string|TableIdentifier $table

テーブル名を指定する

where

selectメソッドのwhereを参照のこと。

Update

Zend\Db\Sql\Sqlクラスのupdateメソッドから呼び出される。

基本的な利用方法

コンストラクタ

引数
null|string|TableIdentifier $table

テーブル名を指定

table

引数
string|TableIdentifier $table

テーブル名を指定

set

引数
array $values 連想配列
string $flag VALUES_*の値

where

selectメソッドのwhereを参照のこと。

コメント

    スポンサー