Laravel 4.2在不使用elequent查询构建器的情况下执行查询

时间:2017-02-01 15:26:24

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

我有一个子查询查询..我想编写一个明确的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!

3 个答案:

答案 0 :(得分:2)

您可以将子查询与 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

答案 1 :(得分:0)

使用 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');

答案 2 :(得分:-1)

为什么不尝试使用DB :: raw('这里是你的sql查询')