CakePHP 3 updateAll with alias

时间:2017-07-15 16:31:16

标签: cakephp cakephp-3.0 cakephp-3.4

在CakePHP 2中我们可以在updateAll方法中使用别名,但在CakePHP 3(测试过的3.4.9)中不能使用别名吗?

$this->_table->updateAll([
    $this->_table->getAlias() . '.deleted' => Time::now()
], [
    $this->_table->getAlias() . '.' . $this->_table->getPrimaryKey() => $entity->{$this->_table->getPrimaryKey()}
]);

如果您的表格为products且别名为Products,那么它可以正常工作,但如果您的表格为cart_products且别名为CartProducts,则表示不起作用}

SQL应如下所示:
UPDATE cart_products AS CartProducts SET... WHERE CartProducts.id = ...
而不是 UPDATE cart_products SET... WHERE CartProducts.id = ...

BTW:上面的代码来自我的行为。

1 个答案:

答案 0 :(得分:1)

您无法在updateAll()次查询中使用别名。 updateAll()函数不支持联接,因此所有字段都可以使用unaliased。