2015-01-19 10 views
7

Attribute hinzugefügt ich ein benutzerdefiniertes Attribut zu meinem Modelleloquent Suche/wo auf benutzerdefinierte

public function getTouchedAttribute() { ... 

Ich mag diese

hasMany()->where('touched', ...) 

zu einer Abfrage hinzufügen, aber offensichtlich ist dies nicht eine Spalte in Der Tisch.

Was ist der eleganteste Weg, um dieses Verhalten zu erreichen?

Antwort

6

Eine Option (und wahrscheinlich die bessere in Bezug auf die Leistung) wäre das Attribut mit Raw SQL-Funktionen zu imitieren. (Können Sie nicht helfen, weil ich weiß nicht, was touched tut)

Der andere Weg ist filter auf der resultierende Sammlung zu verwenden:

$collection = Model::all(); 
$filtered = $collection->filter(function($model){ 
    return $model->touched == true; 
}); 
+0

Gut. Das ist gut. Wenn es eine einfache SQL-Abfrage wäre, hätte ich es auf diese Weise gemacht, aber es ist eine Verschmelzung von mehreren Abfragen und einigen anderen Variablen. – NiRR