Необработанный запрос Laravel: всего с выбором внутри счета - PullRequest
0 голосов
/ 10 октября 2018

Я создаю 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 вместо ?????.Может ли кто-нибудь дать мне подсказку.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы можете передать параметры, которые будут связаны с необработанным выбором, используя массив 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.Если вы можете добавить пример данных, возможно, об этом можно сказать больше.

0 голосов
/ 10 октября 2018

Попробуйте использовать параметр привязки к необработанному запросу.https://laracasts.com/discuss/channels/laravel/how-to-bind-parameters-to-a-raw-query?page=1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...