2017-03-17 5 views
0

$ produkt-> Standort nennen habe ich die folgenden TabellenWie kann ich "Spalten verbinden", so kann ich

Events

id 
    name 
    start_date 
    end_date 

EventLineItems (zum Event & Produkt gehört)

id 
    event_id 
    product_id 
    quantity 

Produkte

id 
    name 
    quantity 
    rack 
    section 
    level 
    position 

Derzeit meine Klinge für events.show Datei sieht wie folgt aus

@foreach ($event->lineitems as $item) 
    <tr> 
    <td>{{$item->product->id}}</td> 
    <td>{{$item->quantity}}</td> 
    <td>{{$item->product->name}}</a></td> 
    <td>{{$item->resource_id}}</td> 
    <td>{{$item->product->rack}} - {{$item->product->section}} - {{$item->product->level}} - {{$item->product->position}}</td> 
    </tr> 
@endforeach 

Ich möchte item- $ anrufen können> produkt-> Lage meiner Meinung nach, anstatt jedes einzeln Feld. Ich denke das würde in meinem Modell als Funktion aber nicht sicher gehen wie oder was man googlen soll.

Für verein Zwecke denken (Rechnung, Lineitem, Produkte)

+1

würden Sie bitte Ihre Modelle auf den Posten hinzufügen? –

+0

Ich habe viele Änderungen vorgenommen – DevJustin

Antwort

0

Ich weiß nicht, wie Sie Ihre DB-Struktur ist, aber ich nehme an, dass Ihr Artikel Modell würde belongTo Produkt. So unten sind Beispiele, die eine Menge Ratearbeit verwenden ...

So würde Ihr LineItem Modell enthalten.

function product() 
{ 
    return $this->belongsTo(Product::class); 
} 

function event() 
{ 
    return $this->belongsTo(Event::class); 
} 

Ihr Event-Modell etwas ähnliches enthalten würde:

function lineItems() 
{ 
    return $this->hasMany(EventLineItem::class); 
} 

Dann, wenn Sie die Datenbank mit Eloquent abzufragen, würden Sie so etwas wie:

$events = Event::with(['lineItems', 'lineItems.product'])->get();

Dadurch werden alle bekommen Ereignisse, mit allen lineItems und dem Produkt, das mit jedem der lineItems

01 verbunden ist

siehe https://laravel.com/docs/5.4/eloquent-relationships#querying-relations und https://laravel.com/docs/5.4/eloquent-relationships#eager-loading für weitere Informationen

bearbeiten auf der Grundlage aktualisierter Frage:

Sie ein accessor in Ihrem Modell definieren. https://laravel.com/docs/5.4/eloquent-mutators#accessors-and -mutators

public function getLocationAttribute() 
{ 
    return sprintf('%s - %s - %s - %s', $this->attributes['rack'], $this->attributes['section'], $this->attributes['level'], $this->attributes['position']); 
} 

Dann Ihrer Ansicht {{ $item->product->location }}

+0

Ich habe meine Frage bearbeitet, $ lineitems gehört zu einem Ereignis und einem Produkt – DevJustin

+0

Siehe aktualisierte Antwort – Gravy

+0

Danke, aber ich bekomme bereits alle meine Artikel und meine Blade-Datei wie oben gezeigt funktioniert aber ich suche die DRY Art der Eingabe der letzten als $ item-> Produkt-> Ort stattdessen. Ich weiß, dass die Spalte nicht existiert – DevJustin

Verwandte Themen