2017-06-13 3 views
1

ich die folgenden zwei Tabellen haben:Laravel Schwenk Daten in einer Ansicht

Items 
    id 
    name 

Values 
    id 
    item_id 
    value_date 
    value 

Die Beziehung zu einzelnen Posten ist ein hasMany (Value :: Klasse) und die Beziehung auf Werte ist belongsTo (Punkt :: Klasse). Ich möchte die Daten wie diese in einer Ansicht angezeigt werden:

-------------------------------------------------------------------- 
      | Item Name 1 | Item Name 2 | Item Name 3 | Item Name 3 | 
-------------------------------------------------------------------- 
01/01/2017 | Value  | Value  | Value  | Value  | 
-------------------------------------------------------------------- 
01/02/2017 | Value  | Value  | Value  | Value  | 
-------------------------------------------------------------------- 
01/03/2017 | Value  | Value  | Value  | Value  | 
-------------------------------------------------------------------- 
01/04/2017 | Value  | Value  | Value  | Value  | 
-------------------------------------------------------------------- 
01/05/2017 | Value  | Value  | Value  | Value  | 
-------------------------------------------------------------------- 

Ich glaube, ich brauche die folgende Pivot-Tabelle hinzuzufügen, um dies zu erreichen:

Dates 
    id 
    date 
    item_id 
    value_id 

Aber meine Frage ist, wie würde ich mich über immer die Item-Namen zum Erstellen der Kopfzeile? Übertreibe ich das?

Antwort

0

Sie würden eine Pivot-Tabelle benötigen, wenn Sie eine Viele-zu-Viele-Beziehung hätten, was hier nicht der Fall ist.

könnten Sie eager loading verwenden:

// Get ALL the Items, with their Values, ordered by Values.date 
$items = Items::with(['values' => function ($query) { 
    $query->orderBy('date', 'asc'); 
}])->get(); 

foreach ($items as $item) { 

    // Item data 
    var_dump($item->id); 
    var_dump($item->name); 

    // Values data (per Item) 
    foreach ($item->values as $value) { 

     var_dump($value->value); 
     var_dump($value->date); 

    } 
} 

Dann ist es nur die Sache es Ihrer Meinung nach zu arrangieren.

+0

Danke dafür. Es hat mich fast den ganzen Weg dorthin gebracht. Arbeitet noch daran, es richtig zu arrangieren. – Chris