1
CakePHP 2では、updateAll
メソッドでエイリアスを使用できますが、CakePHP 3(テスト済み3.4.9)では別名を使用できませんか?CakePHP 3 updateAll with alias
$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 = ...
私は上記のコードは私の動作からです。
"_doesn't work_"は適切な問題の説明ではありません。問題がCakePHPの内部を知っている人にとって明白であっても、_exactly_が何を起しているのか、そして_確実に_何が起こるのかについて常にできるだけ具体的にしてください。私は問題は、結果のクエリには 'UPDATE'節にエイリアスが含まれるが、' WHERE'節にはエイリアスが含まれないということだろうか? – ndm
SQLコードを追加しました。SQLは 'UPDATE cart_products SET ... WHERE CartProducts.id = ...'のように見えます。 「cart_products」の後に「AS Cart Products」がありません – kicaj
生成されたSQLはどこにありますか?私は 'WHERE'節がエイリアスを持たないことを期待しています(理由は後ほど説明します)。3.4.9の簡単なテストでは、私にとっては' SET'節のエイリアスが正確に表示されますが、 'WHERE'節。 – ndm