site_emailのみ保存できません。
Controllerのstoreメソッド内でdd($requesut); すると以下のようになってます
+request: Symfony\Component\HttpFoundation\ParameterBag {#44 ▼ #parameters: array:6 [▼ "cast_name" => "クロダ" "cast_password" => "ssss" "id" => array:4 [▶] "site_email" => array:4 [▼ 0 => "aa@ga" 1 => null 2 => null 3 => null ]
そして以下 $cast->site_email[] = $request->site_email;の記述が間違っているため保存処理を完了することができません。
どのような記述にすれば配列を$castに詰めなおしてsave()することができるようになるのでしょうか?
public function store(Request $request) { dd($request); $cast = new Cast; $cast->cast_name = $request->cast_name; $cast->cast_password = $request->cast_password; $cast->site_email[] = $request->site_email; $cast->save(); $cast->sites()->attach($request->id); return redirect()->route('cast.index'); }
cast php
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Cast extends Model { use HasFactory; protected $table = 'casts'; public function sites() { return $this->belongsToMany('App\Models\Site'); } }
####テーブル構成
cast_site テーブル
|id|cast_id|site_id|site_email|
|:--|:--:|--:|
||||
casts テーブル
id | cast_name | cast_password |
---|---|---|
sites テーブル
id | site_name | site_url |
---|---|---|
#####試したこと
foreach ($cast as $data) { $data->site_email = $request->site_email; }
このようにもしてみましたがsite_emailなんてないよと言われてしまいます。
以上になります。もし解決策、改善点などあれば、ご教示いただけると幸いです。
あなたの回答
tips
プレビュー