我想獲得的所有Report
車型,其中關係ReportUpload
的的status
屬性等於0 或其中ReportUpload
關係沒有按'不存在。 Report
和ReportUpload
模型有一對一的關係,ReportUpload
屬於Report
。雄辯:約束熱切的負載關係,其中關係屬性爲0或關係不存在
有些不確定如何去使用雄辯的關係約束或任何其他方法。任何幫助,將不勝感激。
這裏是我當前的代碼:
// initial query
$reports = Report::whereHas('link', function($query) {
$query->where('status', 'complete');
})->with('student', 'course', 'institution', 'reportUpload');
// apply constraint
if ($request->has('uploadStatus')) {
$uploadStatus = $request->has('uploadStatus'); // 0 or 1
if ($uploadStatus === 0) {
$reports = $reports
->whereDoesntHave('reportUpload')
->orWhereHas('reportUpload', function($query) use ($uploadStatus) {
$query->where('status', $uploadStatus);
});
} else {
$reports = $reports->whereHas('reportUpload', function($query) use ($uploadStatus) {
$query->where('status', $uploadStatus);
});
}
}
的代碼不會產生預期的效果。
編輯
嘗試這種做法,但不知道這是否是正確的:
$reports = $reports
->where(function ($query) use ($uploadStatus) {
$query
->whereDoesntHave('reportUpload')
->orWhereHas('reportUpload', function($query) use ($uploadStatus) {
$query->where('status', $uploadStatus);
});
});
也許[whereDoesnHave](https://laravel.com/api/5.1/Illuminate/Database/Eloquent/Builder.html#method_whereDoesntHave)可能有幫助嗎? –
你是在暗示我使用它嗎?因爲它已經在我的代碼中。如果你的意思是別的,請澄清,謝謝。 – haakym
對不起,@haakym,我誤解了這個問題,我不認爲我以前的評論是相關的。抱歉! –