2016-09-01 6 views
1

Wie kann ich zwei verschiedene Objekte zu einem zusammenführen? Ich möchte 2 Tabellen in einer Zeitleiste anzeigen und sie nach dem Erstellungsdatum gruppieren. Wenn ich versuche, nur einen Tisch zu zeigen, funktioniert es gut, aber ich möchte sie beide nach Datum kombinieren. Wenn also zwei Zeilen in verschiedenen Tabellen existieren, die dasselbe Erstellungsdatum haben, möchte ich, dass sie nach diesem Datum gruppiert werden.Laravel verschiedene Objekte groupBy

$comments = array_slice(WPComment::with('recipe')->orderBy('comment_date', 
     'desc')->get()->groupBy('comment_date')->toArray(), 0, 5); 
    $favorites = array_slice(WPFavorite::with('user')->orderBy('date_time', 
     'desc')->get()->groupBy('date_time')->toArray(), 0, 5); 

Ich habe mit dem $object1->merge($object2) versucht, aber dass obvieusly keine vollständige Zusammenführung der Elemente macht, da es einige Umschreiben getan ist. Das Zusammenführen von Arrays mit array_merge() funktioniert grundsätzlich genauso. Gibt es eine Ein-Zeilen-Lösung ohne die Notwendigkeit, einige böse Raws oder Double for Loop Kauderwelsch zu schreiben?

EDIT:

JSON Beispiel vor

obj1:{ 
    id: 1 
    title:'blah', 
    date: 1.1.2001 
    } 
obj1:{ 
    id: 2 
    title:'blah blah', 
    date: 31.4.2301 
    } 

obj2:{ 
    id: 1 
    notTitle:'blah', 
    somethingSomething : 'something' 
    date: 31.4.2301 
    } 

JSON Beispiel nach:

1.1.2001:{ 
     obj1:{ 
      id: 1 
      title:'blah', 
      date: 1.1.2001 
      } 
     } 
31.4.2301:{ 
     obj1:{ 
      id: 2 
      title:'blah blah', 
      date: 31.4.2301 
      } 
     obj2:{ 
      id: 1 
      notTitle:'blah', 
      somethingSomething : 'something' 
      date: 31.4.2301 
      } 

     } 
+0

Wie wird ein Artikel merged aussehen? –

+0

Top JSON Abbildung ist das Datum, und dann Ebene darunter kann jeder Objekttyp sein, abhängig davon, ob ihre Daten übereinstimmen – Norgul

+0

Veröffentlichen Sie das Beispiel: Objekte vor und nach dem Zusammenführen. –

Antwort

0

ich haben es geschafft, mein Problem mit array_merge_recursive() Methode zu lösen.

So, jetzt Komplettlösung:

$comments = array_slice(WPComment::with('recipe')->orderBy('comment_date', 
      'desc')->get()->groupBy('comment_date')->toArray(), 0, 5); 
$favorites = array_slice(WPFavorite::with('user')->orderBy('date_time', 
      'desc')->get()->groupBy('date_time')->toArray(), 0, 5); 

return array_merge_recursive($comments, $favorites); 
Verwandte Themen