save()ができません、Type error: Too few arguments to function Illuminate\Database\Eloquent\Model::setAttribute()というエラーが起きる

2018-05-25

5858

通りすがりの人

関連メモ

現在:公開中

save()ができません、Type error: Too few arguments to function Illuminate\Database\Eloquent\Model::setAttribute()というエラーが起きる

Laravel5.6で、foreachの中で、条件にあうデータがなければデータを新たに作成して挿入するといったことをしたいのですが、save()のところで毎回エラーが出てしまいます。
エラーが出ていても、作成しされたデータの1つ目だけはテーブルに登録されます。しかし、作成しなければいけないデータが全て揃うまで、
Type error: Too few arguments to function Illuminate\Database\Eloquent\Model::setAttribute()
というエラーが出続けるので改善したいです。

foreach($demotable as $demo){
            if(!($ext = Exhibition::where('demo_id',$demo->demo_id)
                ->where('user_id',$user_id)
                ->exists())){
                $exhibitiontable = new Exhibition;
                $exhibitiontable->demo_id = $demo->demo_id;
                $exhibitiontable->user_id = $user_id;
                $exhibitiontable->likable = 0;
                $exhibitiontable->wantmore = 0;
                $exhibitiontable->user_visited = 0;
                $exhibitiontable->save();
            }
        }

save()の直前で保存されるデータ内容を出力したところ、問題なくデータがreturnされていたので、データそのものはきちんと入っているようでしたが、それ以外のことはわかりません。

0

投稿者:通りすがりの人 / 投稿日:2018-05-25 21:06:29 / PV数:5858 / コメント数:7

sponsor

コメント 7

2018-05-27 12:03:59

通りがりすの人

ユニークキーついてないですか?バリデーションで弾くほうが楽な気はしますがいかがでしょうか

2018-05-27 12:15:38

通りがりすの人

翻訳
型エラー:関数の引数が少なすぎます。\ Database \ Eloquent \ Model :: setAttribute()

2018-05-27 12:42:50

通りがりすの人

わかんないですね。。すみません

2018-05-27 12:44:55

通りがりすの人

解決したら教えてください!

2018-05-27 21:24:08

通りすがりの人

ユニークキーは現状ないです、今の所まだ解決せずです・・・

2018-05-27 21:54:05

通りすがりの人

解決しました、
原因はモデルに

protected $primaryKey = null;

が書かれていたことが原因のようです
消したら通りました。

2018-05-28 10:23:38

通りがりすの人

素晴らしいです!
お疲れ様でした!

$primaryKey = null;

ちょっと笑いましたw

コメント投稿