mi vorrebbe ottenere tutti i modelli Report
dove la relazione ReportUpload
's proprietà di status
è uguale a 0 o dove la relazione ReportUpload
doesn' Esistono I modelli Report
e ReportUpload
hanno una relazione uno a uno, ReportUpload
appartiene a uno Report
.eloquente: Vincolare una relazione carico desideroso dove la proprietà relazione è 0 o relazione non esiste
Piuttosto insicuro su come procedere utilizzando i vincoli di relazione di eloquenti o qualsiasi altro metodo. Qualsiasi aiuto sarebbe apprezzato.
Ecco il mio codice corrente:
// 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);
});
}
}
Il codice non produce i risultati desiderati.
Modifica
Cercando questo approccio, ma non so se è corretto:
$reports = $reports
->where(function ($query) use ($uploadStatus) {
$query
->whereDoesntHave('reportUpload')
->orWhereHas('reportUpload', function($query) use ($uploadStatus) {
$query->where('status', $uploadStatus);
});
});
Forse [whereDoesnHave] (https://laravel.com/api/5.1/Illuminate/Database/Eloquent/Builder.html#method_whereDoesntHave) potrebbe essere d'aiuto? –
Stai suggerendo di usarlo? Perché è già nel mio codice nella domanda. Se intendevi qualcos'altro per favore chiarisci, grazie. – haakym
Scusami, @haakym, ho frainteso la domanda, non penso che il mio commento precedente sia pertinente. Scusate! –