我想将具有特定where子句的DB :: raw()添加到现有查询中。
我有这个查询:
protected static $type =
[
'daily' => 1,
'weekly' => 2,
'montly' => 3,
];
$revenuedetails = DB::table("users")
->select("users.username", "users.email",DB::raw("DATE(users.created_at) as subscription_date"))
->where('users.plan', self::$type[$plan] ?? null);
但是我想添加:
DB::raw("DATE(users.created_at) as expired_date"))
where('users.plan_status', 0)
谁应该在旁边
DB :: raw(“ DATE(users.created_at)as subscription_date”))
因此结构现在将是
用户名|电邮| subscription_date | expired_date
我要添加
DB :: raw(“ DATE(users.created_at)作为过期日期”))
具有自己的特定where子句
where('users.plan_status',0)
到现有查询。
请注意
where('users.plan',self :: $ type [$ plan] ?? null)
是总体where子句。
那么最终结果应该是
用户名|电邮| subscription_date | expired_date
答案 0 :(得分:1)
如果我对您的理解正确,如果计划状态= 0,那么您要使用created_at日期作为到期日期吗?如果不是,那么expired_date应该为空吗?
如果是这样,您可以使用case语句来完成此操作,就像这样...
DB::raw(" CASE WHEN users.plan_status = 0 THEN DATE(users.created_at) ELSE null END AS expired_date ")
答案 1 :(得分:0)
嗨,如果我很好理解,您想在创建的别名上使用一个where位置,以便可以使用“ having()”代替如下所示的where位置:
$revenuedetails = DB::table("users")
->select("users.username", "users.email",DB::raw("DATE(users.created_at) as subscription_date"), DB::raw("DATE(users.created_at) as expired_date"))
->having("subscription_date", "operador", "Value_condition")
->having("expired_date", "operador", "Value_condition")
->where('users.plan', self::$type[$plan] ?? null);
您还可以查看以下参考资料:
Can you use an alias in the WHERE clause in mysql?
希望我能对您有所帮助
致谢