【问题标题】:Laravel 4.2 execute query without using elequent query builderLaravel 4.2 在不使用 elequent 查询生成器的情况下执行查询
【发布时间】:2017-06-18 10:01:04
【问题描述】:

我有一个带有子查询的查询 .. 我想写一个明确的 SQL 请求并执行它 查询:

select count(*) as count from 
(
SELECT DISTINCT t.article_id FROM 
`articles` as a left join `tags` as t
on a.`id` = t.`article_id`
where a.`flag` = 1
) as sub

我试过这个来执行请求而不构建查询:

DB::connection()->getPdo()->exec( $sql );

但它总是返回 0 !

【问题讨论】:

    标签: sql laravel laravel-5 laravel-4 eloquent


    【解决方案1】:

    您可以将子查询与 DB::raw 一起使用。 DB::raw() 方法(不要忘记使用 Illuminate\Support\Facades\DB)允许您选择任何您想要的内容并基本上编写原始 SQL 语句。

    DB::select(DB::raw("select count(*) as count from 
    (
    SELECT DISTINCT t.article_id FROM 
    `articles` as a left join `tags` as t
    on a.`id` = t.`article_id`
    where a.`flag` = 1
    ) as sub"));
    

    https://laravel.com/docs/4.2/queries#raw-expressions

    【讨论】:

      【解决方案2】:

      你为什么不试试 DB::raw('your sql query here')

      【讨论】:

        【解决方案3】:

        使用 DB::select 应该可以解决您的问题。

        DB::select('select count(*) as count from 
        (
        SELECT DISTINCT t.article_id FROM 
        `articles` as a left join `tags` as t
        on a.`id` = t.`article_id`
        where a.`flag` = 1
        ) as sub');
        

        【讨论】:

          猜你喜欢
          • 2018-01-06
          • 2015-04-06
          • 2018-07-03
          • 2019-04-25
          • 2018-06-23
          • 2015-12-13
          • 1970-01-01
          • 2013-05-30
          • 1970-01-01
          相关资源
          最近更新 更多