如何使用Laravel加入Leftjoin?

时间:2017-02-09 06:15:25

标签: php mysql laravel

我对leftjoin&加入laravel 我想将以下示例重写为laravel,我该怎么做?

LEFT JOIN(advertsolution_f SF 
          JOIN function_d FD ON SF.fd_id = FD.fd_id 
          JOIN function_m FM ON FD.fm_id = FM.fm_id) 
ON SM.ads_id = SF.ads_id 

我试着像这样重写它,但我认为这不是一个好主意。

->leftJoin($SF,$SM.'.ads_id',$SF.'.ads_id')
->leftjoin($FD,$SF.'.fd_id',$FD.'.fd_id')
->leftjoin($FM,$FD.'.fm_id',$FM.'.fm_id')

因为我不知道如何私下将表连接到$ SF。

2 个答案:

答案 0 :(得分:0)

要进行此类复杂查询,您可以使用RAW EXPRESSIONS,如:

$users = DB::table('users')
->select(DB::raw('count(*) as user_count, status'))
->where('status', '<>', 1)
->get();

原始表达

有时您可能需要在查询中使用原始表达式。这些表达式将作为字符串注入到查询中,因此请注意不要创建任何SQL注入点!创建原始表达式。

Reference

答案 1 :(得分:0)

这样的地图,

->leftJoin($SF,$SM.'.ads_id','=',$SF.'.ads_id')
->leftjoin($FD,$SF.'.fd_id','=',$FD.'.fd_id')
->leftjoin($FM,$FD.'.fm_id','=',$FM.'.fm_id')

您缺少=登录查询。

编辑

您提供的示例,我代表它编写查询,您只需要使用原始字段和表格进行映射,

DB::table('a')
->leftJoin("b","b.a_id","=","a.id")
->leftJoin("c","c.b_id","=","b.id")
->leftJoin("d","d.bd_id","=","b.bdid")
->get();

根据您的要求映射此查询, 它应该工作。