1

次のテーブルがあります。

Users (
    id [PK]
    address_id [FK]
)

Addresses(
    id [PK]
    users_count
)

そして、次のモデルの関連付け:

Addresses $haveMany Users
Users $belongsTo Addresses (cacheCounter => true)

Users テーブルのaddress_id[FK] は NULL 値を許可します。

Users コントローラには、foreign_key (address_id) に NULL 値があっても、追加/編集の使用$this->Model->save()と更新の両方の 3 つの機能 (追加、編集、削除) があります。cacheCounter

しかし、削除機能を使用する$this->Model->deleteと、次のエラーが発生します。

 UPDATE [addresses] SET [user_count] = 0 WHERE [id] IS N''

これは、foreign_key (address_id) の値が NULL であるためです。

このエラーの発生を防ぐために cacheScope に入れることができるものはありますか??

前もって感謝します。

4

1 に答える 1

-1

app/lib/Cake/Model/Model.php 行 1963

updateAll 関数を次のようにラップしました。

if (!empty($keys[$foreignKey])) {

御馳走を働きます。

于 2013-06-05T11:09:45.033 に答える