我正在构建一个SQL查询(这是Postgres的问题),它将返回具有所有字段和引用总数的文章列表。
$a = Articles::select(DB::raw('
*,
count(
select * from "references"
where exists (select * from "users" where "users"."reference_id" = "references"."id"
and "article_id" = ?????
) as total'
))->where('created_at', '<', $date)->get();
我简化了一点; count()内部还有更多“存在”条件;还有更多-> where()规则,这些规则是动态的,很难用原始SQL重写。我的主要误解是如何放置相应的article_id而不是?????。有人可以给我一个提示。
答案 0 :(得分:2)
尝试一下有关将参数绑定到Raw查询的方法。 https://laracasts.com/discuss/channels/laravel/how-to-bind-parameters-to-a-raw-query?page=1
答案 1 :(得分:2)
您可以使用PHP数组传入要绑定到原始选择的参数:
$a = Articles::select(DB::raw('
*,
count(
select * from references r
where exists (select 1 from users u
where u.reference_id = r.id and article_id = ?)
) as total', ['some id here']))
->where('created_at', '<', $date)
->get();
也许有更好的方法在Postgres中编写查询。如果您可以添加一些示例数据,那么也许可以说更多。