繁体   English   中英

在Laravel中执行准备好的原始SQL

[英]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分组的行数时加入table1table2 ,所以最终结果应该是这样的:

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM