Добавление куда к вложенному запросу в Laravel - PullRequest
1 голос
/ 18 октября 2019

Мне нужна помощь с предложением WHERE, в коде дополнительно указана дата начала $, и запрос работает при работе с SQL изнутри Laravel. Я получаю сообщение о том, что $ startdate не установлен. Я не уверен, что я даже делаю ГДЕ правильно.

$query = DB::query()
    ->select('CC AS CountOfVisits', DB::raw('count(CC) AS Users'))
    ->fromSub
    (function (\Illuminate\Database\Query\Builder $query) {
            $query->select('user_id', DB::raw('count(user_id) AS CC '))
                ->from('mytable')
                ->where('created_at', '>=', $startdate)
                ->groupBy('user_id');

        }, 'CC')
    ->groupBy('CC');

$result = DB::connection('mysql2')->select($query->toSql());

1 Ответ

0 голосов
/ 18 октября 2019

Это потому, что ваш fromSub - это anonymous function, также известный как closures. Он не знает о переменных, которые вы определяете за пределами замыкания. Вы можете прочитать больше о них в официальных документах PHP

Перепишите ваш запрос по адресу:

$result = DB::connection('mysql2')
    ->query()
    ->select('CC AS CountOfVisits', DB::raw('count(CC) AS Users'))
    ->fromSub(function($query) use ($startdate) {
        $query->select('user_id', DB::raw('count(user_id) AS CC '))
            ->from('mytable')
            ->where('created_at','>=',$startdate)
            ->groupBy('user_id');
        }, 'temp')
    ->groupBy('CC')
    ->get();

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