2017-01-02 8 views
1

I einfaches Maildata-Modell und Mail-ModellFilter nach verwandtem Bereich des Modells in Laravel der Eloquent

haben diese Beziehung in Maildata:

function mail(){ 
    return $this->belongsTo(Mail::class); 
} 

hier ist meine Frage:

$m = MailData::where('user_id', $userId)->orderBy('created_at', 'DESC')->take(10)->get(); 

aber ich will Filtern nach Feld "Favorit", das in Mail-Modell ist. Wie kann ich das machen?

Antwort

1

Wenn Sie wan Daten zu filtern und erhalten nur diejenigen, können Sie

$m = MailData::with('mail')->whereHas('mail', function ($q) use ($value) { 
     $q->where('favorite', $value); 
    }) 
     ->where('user_id', $userId)->orderBy('created_at', 'DESC')->take(10)->get(); 
+0

und kann ich 'your_value' in dieser Funktion übergeben? – zbyshekh

+0

ja, antwortet aktualisiert, bitte überprüfen Sie – shoieb0101

+0

das ist genau das, was ich brauchte, vielen Dank – zbyshekh

1

Sie können dies tun.

$m = MailData::with('mail')->whereHas('mail',function($q) use($v){ 
      //filter the field favorite here.. 
      //example 
      $q->where('favorite','like',$v); 
     })->where('user_id', $userId)->orderBy('created_at', 'DESC')->take(10)->get(); 
+0

verwenden und kann ich in dieser Funktion ‚etwas‘ Wert übergeben? – zbyshekh

+0

'$ v' ist Ihr Filterwert. Antwort bearbeitet. @zbyshekh –

Verwandte Themen