在Laravel中使用eloquent创建查询

时间:2015-02-25 22:45:15

标签: php mysql laravel laravel-4 eloquent

好的,所以我需要在eloquent或Laravel中创建一个查询。我只是不确定如何创建这样的东西:

select * from 
(select * from Bulk 
  where Login = 'moga' and ApptDate='2015-02-25' 
  order by FormatTime asc) as A
group by Name

这个查询在数据库中作为原始查询运行得很好,我只是不确定如何使用查询助手或雄辩来解决这个问题。

1 个答案:

答案 0 :(得分:0)

您可以使用Eloquent或Query Builder。以下是查询构建器的示例:

DB::table(DB::raw('(select * from Bulk where Login = "moga" and ApptDate="2015-02-25" order by FormatTime asc) as A'))
    ->groupBy('Name')
    ->get();

使用Eloquent,您可以使用ModelName::from()代替DB::table()。但请记住,DB::raw不会转义插入到查询字符串中的变量值,您也可以使用构建器构建嵌套查询,以确保您不会受到SQL注入的攻击:

$from = DB::table('Bulk')
    ->where('Login', $login)
    ->where('ApptDate', $date)
    ->orderBy('FormatTime')
    ->toSql();

DB::table(DB::raw('(' . $from  . ') A'))->groupBy('Name')->toSql();