Windowsで始めるCakePHP4

CakePHP4のメモ

631 views

saveOrFailでarray_combineのエラーが表示される場合の原因と対処の例

saveOrFailを使っていて、以下のエラーに遭遇した場合の原因について。

array_combine(): Argument #1 ($keys) and argument #2 ($values) must have the same number of elements

DBの主キーが複合キーになっていることが原因。

マスターテーブルの場合

XXXTables.phpのinitializeメソッドの中でsetPrimaryKeyを配列で指定しているか確認する。

$this->setPrimaryKey(['sub_category_id', 'category_id']);

これが次のように一つしか指定していない場合に起きる。

$this->setPrimaryKey(['category_id']);

参照テーブルの場合

マスターテーブルから外部キーで結合している場合は、XXXTable.phpのbuildRulesを見直す。

$rules->add($rules->existsIn(['sub_category_id', 'category_id'], 'SubCategories'), ['errorField' => 'sub_category_id']);

existsInの順番も重要。
マスターテーブルの主キーが['sub_category_id', 'category_id']の場合、bulidRulesも同じ順番で指定する必要がある。
どちらでもいいやと、['category_id', 'sub_category_id']と記述すると、保存時にcategory_idに入るべき値がsub_category_idに、sub_category_idに入るべき値がcategory_idに入ってしまう。

Page 4 of 17.

前のページ 次のページ



[添付ファイル]

1.php_xdebug-3.0.4-8.0-vs16-x86_64.dll  


お問い合わせ

プロフィール

マッスル

自己紹介

本サイトの作成者。
趣味:プログラム/水耕栽培/仮想通貨/激辛好き
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
仮想通貨はNEMが好き。
水耕栽培は激辛好きが高じて、キャロライナ・リーパーの栽培にチャレンジ中。

サイト/ブログ

https://www.osumoi-stdio.com/pyarticle/

ツイッター

@darkimpact0626