Windowsで始めるCakePHP4

CakePHP4のメモ

13

908 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の順番も重要。
マスターテーブルの主キーが['subcategoryid', 'categoryid']の場合、bulidRulesも同じ順番で指定する必要がある。
どちらでもいいやと、['category
id', '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/

ツイッター

@darkimpact0626