Laravelを使って新規作成フォームを作成いたしました。
ただ新規作成のフォームからPOSTでデータを受け渡そうとすると、必要なデータが渡せなくて保存できません。 PHP、Laravelに詳しい方、ご教授いただけないでしょうか。
【エラー内容】
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'plan_id' cannot be null (SQL: insert into `corps` (`name`, `plan_id`, `credit_key`, `payment_status`, `payment_method_id`, `payment_date`, `postal_code`, `prefecture_id`, `address1`, `address2`, `updated_at`, `created_at`) values (ほげほげほげお, , , 支払済み, , , 123-1234, , 宮城町, 宮城333-3333, 2018-09-13 12:44:21, 2018-09-13 12:44:21))
上記のようなエラーが発生し、corpモデルの値は取得できているのですが、
ほかの紐づいたデータを取得することができません。
実際のコード、リレーションはこの様になっております
【corpモデル】
public function prefectures() { return $this->belongsTo('App\Models\Prefecture', 'prefecture_id'); } public function plans() { return $this->belongsTo('App\Models\Plan','plan_id'); } public function payment_methods() { return $this->belongsTo('App\Models\PaymentMethod', 'payment_method_id'); }
【 新規作成View】
<div class="nav"> <div class="col-md-6 col-md-offset-3"> <form method="post" action="{{ url('/corps') }}"> {{ csrf_field() }} <label for="name">NAME:</label> <input type="text" name="name" class="form-control"> <label for="payment_method_name" >支払い方法</label> <select class="form-control"> <option value="">選択してください</option> @foreach($payment_method as $payment_method ) <option value="{{ $payment_method->name }}">{{ $payment_method->name }}</option> @endforeach </select> <label for="plan">プラン:</label> <select class="form-control"> <option value="">選択してください</option> @foreach($plan as $plan) <option value="{{ $plan->name }}">{{ $plan->name }}</option> @endforeach </select> <div class="form-group"> <label for="name2">次回支払日:</label> <div class='input-group date' id='datepicker'> <input type='text' class="form-control datepicker"> <span class="input-group-addon"> <span class="glyphicon glyphicon-calendar"></span> </span> </div> </div> <label for="name2">支払い状況:</label> <input type="text" name="payment_status" class="form-control"> <label for="name2">郵便番号:</label> <input type="text" name="postal_code" class="form-control"> <label for="name2">都道府県:</label> <select class="form-control"> <option value="">選択してください</option> @foreach($prefecture as $prefecture) <option value="{{ $prefecture->name }}">{{ $prefecture->name }}</option> @endforeach </select> <label for="name2">住所1:</label> <input type="text" name="address1" class="form-control"> <label for="name2">住所2:</label> <input type="text" name="address2" class="form-control"> <!-- <div class="parent"> --> <!-- <div class="botton left"> --> <a href="{{ action('CorpsController@index', $corp) }}" class="btn btn-outline-secondary">一覧に戻る</a> <input type="submit" value="確認" class="btn btn-outline-success"></input> <input type="hidden" name="_token" value="{{csrf_token()}}"> <!-- </div> --> </div> </form>
【コントローラー】
public function store(Request $request) { $corp = new Corp(); $corp->name = $request->name; $corp->plan_id = $request->plan; #⇦ここの記述が分からない $corp->credit_key = $request->credit_key; $corp->payment_status = $request->payment_status; $corp->payment_method_id =$request->payment_method_id;#⇦ここの記述が分からない $corp->payment_date =$request->payment_date; $corp->postal_code =$request->postal_code; $corp->prefecture_id =$request->prefecture_id;#⇦ここの記述が分からない $corp->address1 =$request->address1; $corp->address2 =$request->address2; $corp->save(); return redirect('/'); }
コントローラーの記述方法がわからないので、そこを改善できれば、保存できるのでは?と思うのですが。。。
何かわかる方いらっしゃいましたらお教えいただけないでしょうか。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。