Laravel Eloquent, wo auf dem Join-Tabelle
Ich habe zwei Personen in laravel 5 Eloquent, Foo und FooType mit oneToMany Beziehung.
class Foo {
public function fooTypes(){
return $this->hasMany('App\FooType');
}
}
und FooType
class FooType{
public function foo(){
return $this->belongsTo('App\Foo');
}
}
Frage 1:
wie kann ich die Abfrage mit beredten query builder und kehren Foos hat type_id
(diese Spalte ist in FooType Tabelle) 5;
etwas, was ich versuchte:
Foo::fooTypes()->where('type_id', 5);
und jeder link für eine gute tuts über Anfragen wie diese.
Frage zwei:
Ich finde heraus, dass dies schwer zu verwenden, Eloquent-Abfrage-generator ist es schlechte Praxis zu verwenden normal laravel Abfragen mit der DB, ich meine mit db kann ich nicht verwenden, orm oder sowas(oder was ist die Vorteile der Verwendung von eloquent Abfrage-generator):
$foos = DB::table('foos')
->join('fooTypes', 'foo_id', '=', 'foos.id')
->where('fooTypes.type_id', '=', '5')
->select('foos.*')
->get();
diese Art von Abfragen sind sehr einfach und es gibt mehrere tutorials darüber.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Antwort zu Frage 1:
Sie können benutzen Sie die erweiterte where-Klausel bei der Verwendung von eloquent orm wie in Ihrem Fall, verwenden Sie ausprobieren können:
Antwort zu Frage 2:
Daten-Mapper oder Query builder ist schneller als ORM Aktiven Datensatz. Also, wenn Sie sind das schreiben sehr großen Anwendungen mit signifikanten Anzahl von gleichzeitigen Anfragen, die dann Daten-Mapper /Abfrage-generator ist der Weg zu gehen.
Auf der anderen Seite ORM bietet eine viel sauberere syntax und bessere code-Lesbarkeit für jemanden, der gerade angefangen mit Laravel oder ist die Schrift kleiner oder mittlerer Größe-app, wo die Anzahl der gleichzeitigen Anfragen werden nicht signifikant groß.
Abfrage-generator, syntax näher an der einfachen SQL-Abfragen, die jemand gearbeitet hat, mit Datenbanken und sql findet einfach zu beziehen.
Es ist also eine Wahl, die Sie machen müssen, je nach Ihren Komfort mit den Abfrage-generator, syntax als auch die Größe der app, die Sie schreiben.
Laravel Eloquent vs Fließend Abfrage-generator