【发布时间】:2015-03-19 13:12:34
【问题描述】:
这快把我逼疯了。为什么 Cake 需要把简单的事情变得过于复杂..
我希望让 Cake 生成如下所示的 SQL。
我希望运行的 SQL 是
DELETE `ProductVouchers`
FROM `product_vouchers` AS `ProductVouchers`
WHERE `ProductVouchers`.`id` = 16
AND `ProductVouchers`.`client_id` IS NULL;
我正在像这样使用delete()
$this->ProductVouchers->delete([
'ProductVouchers.id'=>$id,
'ProductVouchers.client_id'=>"NULL"
]);
日志显示
DELETE `ProductVouchers`
FROM `product_vouchers` AS `ProductVouchers`
WHERE `ProductVouchers`.`id` IN (16, 'NULL')
尝试
$this->ProductVouchers->delete([
'ProductVouchers.id'=>$id,
'ProductVouchers.client_id'=>NULL
]);
日志显示
DELETE `ProductVouchers`
FROM `product_vouchers` AS `ProductVouchers`
WHERE `ProductVouchers`.`id` IN (16, NULL)
尝试:
$this->ProductVouchers->delete([
'ProductVouchers.id'=>$id,
'ProductVouchers.client_id IS NULL'
]);
日志没有显示更错误的内容!
编辑:
正如下面的答案中所指出的,delete() 方法不正确,因为它只接受主键作为整数。所以使用deleteAll()
$this->ProductVouchers->deleteAll([
'ProductVouchers.id'=>$id,
'ProductVouchers.client_id'=>'NULL'
]);
这也不会在日志中产生任何错误或任何错误。尝试:
$this->ProductVouchers->deleteAll([
'ProductVouchers.id'=>$id,
'ProductVouchers.client_id'=>NULL
]);
这会产生...
DELETE `ProductVouchers`
FROM `product_vouchers` AS `ProductVouchers`
WHERE `ProductVouchers`.`id` = (17)
哪一个是错误的和奇怪的(括号的意义是什么??)
【问题讨论】:
-
为什么什么?我没有得到这个问题?
-
更新了我的问题 - 抱歉不是很清楚。我沮丧的产物
标签: php cakephp cakephp-3.0