2016-06-16 13 views
0

解決済み、何かが空の関係ではなくエラーを引き起こしていました。Laravel 5.2フォームモデルバインディング - 空の関係を持つモデルを表示

この作業にはいくつかの問題があります。私は4つのテーブルを結合している大きなフォームを持っています。私の例のために私はちょうどここで私はビューに送信するものである3を使用します。生徒はprimaryInsuranceとsecondaryInsuranceの両方を持っている場合

$student = Student::with('primaryInsurance')->with('secondaryInsurance')->findOrFail($student_id); 

フォームが正常に動作しますが、私が得る「非オブジェクトのプロパティを取得しようとすると、 1つまたは両方がテーブルにない場合。どうすればこれを避けることができますか?学生モデルから

{{ Form::text('last_name', null, ['class' => 'form-control required']) }} 
{{ Form::text('primaryInsurance[insured_name]', null, ['class' => 'form-control']) }} 
{{ Form::text('secondaryInsurance[insured_name]', null, ['class' => 'form-control']) }} 

はここに私のフォームから夫婦フィールドです

public function primaryInsurance() { 
return $this->hasOne(StudentInsurance::class, 'student_id', 'student_id')->where('is_primary', '=', 1); 
     } 
public function SecondaryInsurance() { 
return $this->hasOne(StudentInsurance::class, 'student_id', 'student_id')->where('is_primary', '=', 1); 
     } 
+0

は、あなたがあなたの 'scopeWith()'関数がどのように見えるかを共有することができると思いますか?それがLaravelに同梱されていない限り、 – dargue3

+0

@ dargue3 https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Builder.html#method_with – Samsquanch

+0

ughの何かがエラーの原因となっています。私はそれが空の関係のためだと思った。 – KWIZ

答えて

1

まず、あなたのコードのクリーナーを作るためにあなたのwithクエリを兼ね備えています。これと同じように:

$student = Student::with('primaryInsurance', 'secondaryInsurance')->findOrFail($student_id); 

次に、オブジェクトが設定されていることをあなたのビューのチェックに(私はあなたが、配列対ここにオブジェクトを使用するべきだと思う - それは私が信じているエラーを引き起こしているものです)。あなたはテストする必要があります。あなたの問題は、オブジェクトを ''でラップしていることもあります。しないでください。私はこれが動作しない場合、より良いセンスを得るためにあなたのコントローラのロジックを参照する必要があります。

{{ Form::text($primaryInsurance->insured_name, null, ['class' => 'form-control']) }} 

また、存在しない場合nullをデフォルトにもこの上三元を行うことができます。

{{ Form::text((($primaryInsurance->insured_name) ?: null), null, ['class' => 'form-control']) }} 
+0

[laravel docs](https://laravel.com/docs/5.1/eloquent-relationships#eager-loading)によると、 'with'クエリはそれらを引数として受け取り、配列ではないようです...あなたは確かにあなたの答えですか? – dargue3

+0

はい、間違いなく。あなたが共有したリンク。 ** Eagerに複数の関係をロードする** –

+0

これは私の最初の質問を提起したものであり、その例では複数の引数があります。 – dargue3

関連する問題