1
嗨我正在用Agile Toolkit編寫一些DSQL查詢,但有點困惑。鑑於以下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');
謝謝!
謝謝@romaninsh - 奇妙的框架!如果我有更多問題,我明天會試試,並告訴你。 –
我收到500錯誤。查看代碼示例的更新答案。 –
This works: return($ select-> expr(「if([subselect] is null,'N','Y')」) - > setCustom('subselect',$ select)); –