从laravel中的两个表和orderBy日期查询

时间:2015-03-25 18:29:52

标签: php eloquent laravel-5

我的Eloquent每个都有两个表。我想从特定字段中获取每个字段的结果(使用where子句)

然后我想结合两个结果数组并按createdAt date filed

命令它们

如何在laravel5中实现这一目标?我尝试过利用关系,但不能让它发挥作用

这两个数组的例子分开

 $football = Football::where('playerId','=',$id)->get()->toArray();

  $tennis= Tennis::where('playerId','=',$id)->get()->toArray(); 

提前致谢

1 个答案:

答案 0 :(得分:4)

假设他们在不同的桌子上,我可以想到两个解决方案:

1)首先你必须获取两个结果,然后你可以使用

在php中排序
$results = array_merge($football, $tennis);
usort($results, function($a,$b) { 
    return $a['created_at'] < $b['created_at'];
});

2)使用原始查询,运行UNION:

SELECT * FROM (
  SELECT * FROM football WHERE playerId = X
  UNION ALL 
  SELECT * FROM tennis WHERE playerId = X
) AS A ORDER BY created_at;