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を参照のこと。