2016-06-16 197 views
0

已解決,其他原因導致錯誤,不是空關係。Laravel 5.2表單模型綁定 - 顯示模型與()空關係

我在做這項工作時遇到了一些麻煩。我有一個合併4個表格的大表格。在我的例子,我將只使用3這是我送的觀點:

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

的形式工作正常,如果學生既具有primaryInsurance和secondaryInsurance但我得到一個「試圖獲得非對象的屬性「如果一個或兩個都不在桌子上。我怎樣才能避免這種情況?

下面是我的形式幾個字段:

{{ 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

呃其他原因導致錯誤..我認爲這是因爲空關係。 – 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文檔](https://laravel.com/docs/5.1/eloquent-relationships#eager-loading)它似乎像'with'查詢只接受它們作爲參數,而不是一個數組... ...是你確定你的答案? – dargue3

+0

是的,絕對。在你分享的鏈接中。轉到**渴望加載多個關係** –

+0

是的,這是提出我最初的問題,它有他們作爲在這個例子中的多個參數。 – dargue3