[英]Execute prepared raw SQL in Laravel
我有两个这样的表:
表格1:
user_id | fistname | lastname
----------------------------------
1 Foo Foob
2 Bar Barb
表2:
user_id | date
---------------
1 timestamp
2 timestamp
1 timestamp
1 timestamp
2 timestamp
我想在table2
是由user_id
分组的行数时加入table1
和table2
,所以最终结果应该是这样的:
user_id | fistname | lastname | hitcount
-------------------------------------------------
1 Foo Foob 3
2 Bar Barb 2
在原始SQL中做这样的事情很容易,但是我不知道在Laravel中怎么做。
出于安全原因,我想使用准备好的SQL。
基本上,您可以将原始SQL转换为Laravel代码,如下所示:
DB::table('table1')
->join('table2', 'table1.user_id','=','table2.user_id')
->select('table1.user_id','table1.firstname', 'table1.lastname',DB::raw('count(table2.user_id) as hitcount')
->groupBy('table2.user_id')->get();
您需要在模型中定义表关系。
您所解释的是one to many
关系。
在这里,您可以了解更多有关如何使用雄辩的方式定义关系和创建正确的查询的信息。
http://laravel.com/docs/5.1/eloquent-relationships#one-to-many
Table1::Join('Table2', function ($join){
$join->on('table1.user_id', '=', 'table2.user_id')
})->groupBy('table2.user_id)
->get([
'table1.user_id',
'table1.firstname',
'table1.lastname',
]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.