【问题标题】:Laravel, how I can simply execute complex queryLaravel,我如何简单地执行复杂的查询
【发布时间】:2021-12-07 16:48:02
【问题描述】:

我需要统计一个月内发送的电子邮件,以及最后发送给所有人的电子邮件。 我想像这样:

$mes=8; // or any month
$search= [100,101,102,103]; // dni
$sql = "
SELECT A.dni, $mes AS mes, COUNT(*) AS total, B.lastet_date 
FROM emails AS A
LEFT JOIN (
          SELECT dni, MAX(date_sended) AS lastet_date
          FROM emails 
          GROUP BY dni
          ) AS B
          ON B.dni = A.dni 
WHERE MONTH(date_sended) = $mes 
AND A.dni IN ('".implode("', '",$search)."') 
GROUP BY A.dni";

我怎样才能简单地使用原始方法或类似方法来执行它?

【问题讨论】:

    标签: sql laravel raw


    【解决方案1】:

    您可以使用DB::select 助手:

    use Illuminate\Support\Facades\DB;
    ...
    $results = DB::select($sql)
    

    这将返回一个集合,其中每个元素都是查询结果的一行。

    【讨论】:

    • 不要忘记为$mes 变量和$search 列表添加绑定
    • 完美!!当我在自己的 classModelProyect 上扩展类 Model 时,我无法使用原始方法或额外的结果。但是...直接在数据库上创建 sql 结果就像我希望的那样。谢谢书呆子!!!我是 Laravel 的新手,我不知道还能尝试什么。
    猜你喜欢
    • 2021-09-11
    • 2012-09-06
    • 2021-11-12
    • 2016-06-07
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    相关资源
    最近更新 更多