Laravel eloquent Modell, wie man Daten von der Beziehung der Tabelle
Ich bin die Entwicklung einer laravel-Applikation, die die folgenden beredten Modelle
- Produkt hasMany('App/Sku','products_id')
- Sku belongTO('App/Product')
Ich habe einen controller "ProductController', wo der folgende code ist verfügbar
public function index()
{
$products = Product::all();
foreach($products as $product){
$products_id = $product->products_id;
}
}
Ich bin freilegen Erholsamen API wird es meinen Benutzer, um alle Produkt-details (einschließlich skus, Versandarten etc..).
Nehme an, wenn ich eine API - BEKOMMEN : /Produkte
Den code, holt alle Angaben zum Produkt werden, was einige der folgenden
public function index()
{
$products = Product::all();
foreach($products as $product){
$products_id = $product->products_id;
$skus_data = Product::find($products_id)->skus;
}
//Now I have both the product details + skus which I can bundle into an array/json.
}
Nun meine Frage , ist diese Logik richtig? In diesem Fall werden alle Logiken sind in der Steuerung, da ich mit eloquent-Modelle habe ich ein Modell für jede Tabelle und die Beziehungen definiert sind, die in es. Gibt es eine Möglichkeit, ich kann alle details eines Produkts/verknüpften Modell (Produkte details (in Tabelle 1)+ Sku-Angaben (in Tabelle 2)) anstatt die unten
foreach($products as $product){
$products_id = $product->products_id;
$skus_data = Product::find($products_id)->skus;
}
Ich bin ziemlich neu in laravel Entwicklung und eloquent Modelle. Ich werde mit Hilfe von repository-pattern für die Entwicklung und in diesem Fall, wo nicht die aboe Logik (Produkt+Sku Kombination) befindet.
Bitte helfen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie können Holen Sie sich die details der Produkte und skus, ohne dass eine zusätzliche Abfrage pro Produkt mit eager loading
( dies wird bezeichnet als die typischen N+1 Abfrage-problem, wobei N die Anzahl der Produkte )
Nehme an, dass die Beziehung zwischen Ihrem
Product
undSku
Modelle Modell:Produkt
Holen die Produkte, die Daten zusammen mit den sku-Daten, die Sie verwenden können, die
with
Methode. In Ihrem controller:Controller
Dann, in Ihren Ansichten, Sie können Holen Sie sich die info auf diese Weise:
Ansicht
Für das repository Frage: wenn Sie möchten, verwenden Sie ein repository Sie können die eloquent-access-Teil des Codes innerhalb des repository. So, zum Beispiel, könnten Sie diese Methode innerhalb der repository:
ProductRepository
dann können Sie Ihr repository im controller:
Controller
Wenn ich verstehe deine Frage richtig, Sie verwenden können, eager loading.
Dadurch erhalten Sie eine Reihe von Produkten, die einen skus array in jedem Produkt-Objekt.
Wenn das repository-Muster verwendet wird, es so machen.