Laravel查询生成器:将`Case`与`Joins`一起使用

问题描述

我正在尝试在psql中复制以下laravel查询

SELECT 
    disTINCT 
    I.id,T.id,T.name,I.first_name,I.middle_name,I.last_name,I.dob,CASE WHEN NOT E.email IS NULL THEN '<<' ELSE '' END
FROM  individuals AS I 
LEFT JOIN titles AS T ON I.title_id = T.ID 
LEFT JOIN individuals_emails_map AS IEM ON IEM.individual_id = I.id 
LEFT JOIN emails AS E ON E.id = IEM.email_id;

当我使用查询生成器并写:

DB::table('individuals AS I')
    ->join('titles AS T','T.id','=','I.title_id')
    ->leftjoin('individuals_emails_map AS IEM','IEM.individual_id','I.id')
    ->leftjoin('emails AS E','E.id','IEM.email_id')
    ->distinct('I.title_id','T.name','I.first_name','I.middle_name','I.last_name','I.dob')
    ->select('T.id','I.dob')
    ->get();

...它工作正常,但是当我尝试插入CASE行时:

DB::table('individuals AS I')
    ->join('titles AS T','I.dob',DB::raw("CASE WHEN NOT E.email IS NULL THEN '<<' ELSE '' END"))
    ->get();

...我收到以下错误

 Undefined table: 7 ERROR:  missing FROM-clause entry for table "e"

我在做什么错了?

解决方法

我认为您的案例陈述中存在问题:

DataTables

应该是:

$query = Accounts::with('type')->whereYear('created_at',$selectedYear)->select('type_id',DB::raw('type_id as type_id'),DB::raw('sum(amount) as total_amount'),DB::raw("DATE_FORMAT(created_at,'%m') as months")
)->groupBy('months')->get();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...