laravel5.8で本の感想投稿サイトを作っています。
POST送信された値をアクション内で加工してfillメソッドで登録しているのですが、
うまく登録できません。
fillを使う手前でddメソッドを使い、値が入っているのは確認したのですが、、、
具体的には、下記モデルの「user_id」が登録できません。
・storeアクション(リクエストデータを一部加工)
public function store(Request $request) // public function store(StoreImpressionsRequest $request) { // dd($request->all()); $message = $request->all(); if (Auth::check()) { $user_id = Auth::id(); $message += array('user_id' => $user_id); } // チェックボックスにチェックがない時はkey自体が存在しない if (isset($message['secret'])) { $message['secret'] = boolval($message['secret']); } dd($message); // データが入っているのを確認 Impression::create($message); return redirect('books.show', $request->book_id)->with('flash_message', '感想を投稿しました'); }
アクション内でuser_idを連想配列に追加、
ddメソッドで以下のように表示されます。
そして、モデル内に定義したcreateメソッドをアクション内で実行しレコードを保存します。
・Impressionモデル
class Impression extends Model { protected $fillable = ['book_id', 'msg', 'secret',]; protected $guarded = []; // withメソッドでペアになってロードされる protected $with = ['book', 'user']; public static function create(array $attributes = []) { Log::debug($attributes); $model = new Impression($attributes); $model->save(); return $model; } // 以下略
これでレコードが新規作成されたのは確認できたのですが、DBではuser_idがnullになっています。
登録ユーザー以外も投稿できるようにしたいので、nullが入るケースがあること自体はいいのですが、ddメソッドで確認した値が記録されないのはなぜでしょうか?
アドバイスをいただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/14 05:59