前提・実現したいこと
PHP(laravel)でタスク管理システムを作っています。
繰り返す曜日をチェックボックスで選択し、MySQLのデータベースに保存する機能を実装中に以下のエラーメッセージが発生しました。
モデル:Todoでタスクテーブル('todos")内にタスクの内容('body')および難易度('difficultyLevel')を保存、
モデル:frequencyで曜日テーブル('frequencys")内に繰り返す曜日('frequency')を数字で保存したいと考えていてリレーションはできていることを確認しております。
チェックボックスで複数選択して、複数曜日を保存したいのですが、エラーが出てしまっています。エラーの原因、エラーが解決するコードのご教授のほど、よろしくお願いいたします。
発生している問題・エラーメッセージ
Argument 1 passed to Illuminate\Database\Eloquent\Builder::create() must be of the type array, string given, called in /Applications/MAMP/htdocs/Todo202008/Todo_laravel/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php on line 23 /** * Save a new model and return the instance. * * @param array $attributes * @return \Illuminate\Database\Eloquent\Model|$this */ public function create(array $attributes = []) { return tap($this->newModelInstance($attributes), function ($instance) { $instance->save(); }); }
該当のソースコード
laravel
1 {{--Controller内--}} 2 public function store(todo $todo, Request $request) { 3 $todo = new Todo(); 4 $todo->fill([ 5 'body' => $request->body, 6 'difficultyLevel' => $request->difficultyLevel 7 ])->save(); 8 $frequencys = $request->input('frequency'); 9 foreach($frequencys as $frequency){ 10 Todo::create($frequency); 11 } 12 var_dump($frequencys); 13 }
laravel
1 {{--edit.blade.php内--}} 2 繰り返し 3 <input type="checkbox" name="frequency[]" value="0">日 4 <input type="checkbox" name="frequency[]" value="1">月 5 <input type="checkbox" name="frequency[]" value="2">火 6 <input type="checkbox" name="frequency[]" value="3">水 7 <input type="checkbox" name="frequency[]" value="4">木 8 <input type="checkbox" name="frequency[]" value="5">金 9 <input type="checkbox" name="frequency[]" value="6">土 10 <input type="checkbox" name="frequency[]" value="7">なし
試したこと
MySQLの保存型がint型にしていたため、VARCHAR型にしましたが、エラーは消えませんでした。
補足情報(FW/ツールのバージョンなど)
PHP 7.4.9
laravel 6.18.35
MySQL 5.7.26
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/24 07:47