こんにちは私はアジャイルツールキットでいくつかのDSQLクエリを書いていますが、少し混乱しています。次のDSQLコードがあるとします。
$select = $select->add('Model_Rental')->dsql()
->field('id')
->where('dvd_id', $select->getField('id'))
->where('is_returned!=', 'Y');
return "if(($select) is null,'N','Y')";
次のSQLエラーが発生します。
pdo_error: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound
mode: select
params: Array ( )
query: select (select `name` from `movie` where `dvd`.`movie_id` = `movie`.`id` ) `movie`,`code`,if((select `id` from `rental` where `dvd_id` = `dvd`.`id` and `is_returned` != :a ) is null,'N','Y') `is_rented`,`id` from `dvd`
template: select [options] [field] [from] [table] [join] [where] [group] [having] [order] [limit]
しかし、同じ引用符の中で条件を定義すると、エラーは発生しません。
$select = $select->add('Model_Rental')->dsql()
->field('id')
->where('dvd_id', $select->getField('id'))
->where('is_returned!="Y"');
return "if(($select) is null,'N','Y')";
それは私に期待を与えます:
select (select `name` from `movie` where `dvd`.`movie_id` = `movie`.`id` ) `movie`,`code`,if((select `id` from `rental` where `dvd_id` = `dvd`.`id` and is_returned!="Y" ) is null,'N','Y') `is_rented`,`id` from `dvd`
状態を次のように記述しなければならないのはなぜですか。
->where('is_returned!="Y"');
なぜ私は書くことができないのですか?
->where('is_returned!=', 'Y');
ありがとう!