CakePHP4のメモ
![]() |
13 |
908 views
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の順番も重要。
マスターテーブルの主キーが['subcategoryid', 'categoryid']の場合、bulidRulesも同じ順番で指定する必要がある。
どちらでもいいやと、['categoryid', 'subcategoryid']と記述すると、保存時にcategoryidに入るべき値がsubcategoryidに、subcategoryidに入るべき値がcategoryidに入ってしまう。
Page 5 of 34.
1.php_xdebug-3.0.4-8.0-vs16-x86_64.dll
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/