在Laravel中组合5个表并按created_at排序

时间:2016-01-18 15:35:12

标签: laravel eloquent laravel-5.1 laravel-5.2

我正在制作广告网站,人们可以发布他们正在销售的东西。所以我有表:carstechnologyreal_estatepets等。所有这些表都有不同的列,除了" created_at"所有表格共有的列。

示例:

  

CARS:[型号,类型,燃料类型......,created_at]

     

PETS:[名称,描述......,created_at]

因此,如果cars有5行且pets有7行而real_estate有3行,我需要返回按created_at排序的15行。我需要合并所有5个(或更多)表并按created_at对它们进行排序(不丢失任何行)。 你是否有一些提示或想法如何在laravel中做到这一点(Eloquent)?

1 个答案:

答案 0 :(得分:0)

我不相信你可以对查询做任何有用的事情。联合会要求所有查询返回相同数量的列,您可能不想加入这些表,因为这只是一个混乱的混乱。我认为最好的解决方案是使用Collection s。

$collection = new \Illuminate\Support\Collection();
$sortedCollection = $collection->merge($pets)->merge($cars)->merge($realEsate)->sortBy('created_at');