1
我有以下型號:如何使用預先加載相關模型Laravel
- 預約[屬於關聯時隙| belongsTo User]
- 時間段[hasMany Appointment]
- User [hasOne Appointment | HasOne詳情]
- 詳細[屬於關聯用戶]
我想急於負荷約會模型開始的詳細數據(預約有一個用戶,其中有一個詳細記錄)使用以下查詢:
$apps = Appointment::with('timeslot')->with('user')->with('user.details')->get();
這
呼叫引發以下錯誤在Builder.php成員函數addEagerConstraints()非對象
上
爲什麼我在這裏調用非對象,爲什麼我的查詢不工作?
編輯:
這是我的用戶模型的關係:
public function details() {
dd($this->role_id);
switch($this->role_id) {
case 3:
return $this->hasOne('App\CandidateDetails', 'user_id');
break;
case 2:
return $this->hasOne('App\EmployerDetails', 'user_id');
break;
}
}
我知道,這將使用數據透視表可以更好地實現,它是一個學習的過程。 dd()在被我的查詢調用時返回null,但它在其他調用中正常工作。這裏發生了什麼?
嗯,看在我原來的職位編輯 – matthiasdv
不能使用$此有關的定義 - 模型的屬性會當查詢被建立時,這是不會啓動的,所以$ this-> role_id將會返回null,並且不會返回任何關係。 –
那麼實現它的最優雅的方法是什麼?我有一個在用戶表上運行的用戶模型。每個記錄_either_與候選人或僱主表有關係。 – matthiasdv