😒
Laravel 複合キーのテーブルへのinsertがうまくいかない(Illegal offset type)
概要
タイトル通り。
複合キーを持つテーブルへのinsertでなぜか Illegal offset type
と表示されinsertがうまくいかない。
結論
Modelに
public $incrementing = false;
を追加する。
試行錯誤の経緯
主キーを定義
まず、Modelの中にほぼ何も書かれていなかったため、
protected $primaryKey = [
'user_id',
'department_id',
];
を追加 ※この会社は社員が複数部署に所属する場合があるとする!
結果 → 変わらない
insert時の記載方法を変更
変更前
$table = new App\Model\AffiliatedDepartment();
$table->user_id = $user_id;
$table->department_id = $department_id;
$table->save();
この時のエラーは2行目の$table->user_id = $user_id;
で起こった。
変更後
$table = new App\Model\AffiliatedDepartment([
'user_id' => $user_id,
'department_id' => $department_id
]);
$table->save();
結果的にはこれでもダメだった。ちなみにエラーは1行目で起こった。
解決に至ったのは他の複合キーを持つModelを参照したとき。
上記の解決表記を追加したら、一瞬で通った。
Discussion