Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Как в ларавел вложить один селект в другой?
Зачем? Два раза нужно group by делать.
$query2->groupBy('products.id', 'parameters.id')->toSql();
$query = \DB::table(\DB::raw('(' .$query2 . ') as t'))
->select(\DB::raw('count(*) as count, *'))
->groupBy('id')
->having('count', '=', count($parameters))
->get();
На это мне справедливо пишет:
Object of class Illuminate\Database\Eloquent\Builder could not be converted to string
А как и чем слепить их?
Нужно так:
select *, count(*) as count from ($query2 as t) ...
Не в сети
$query = \DB::table(\DB::raw('(' .$query->toSql() . ') t'))
->select(\DB::raw('t.*, count(t.id) count'))
->groupBy('t.id')
->having('count', '=', count($parameters));
->get();
Долго не мог понять, почему путаются парметры и ставятся не в той последовательности, в которой стоят знаки вопроса. Даже менял все выражения на Raw. Сейчас дошло озарение, что лишний параметр ларавел добавляет как раз для вставки $query->toSql(). И знак вопроса, даже если всё заменить на Raw, одиноко красуется в конце запроса, а параметр для него не находится.
Поэтому снова вопрос, как этот долбаный селект вставлять синтаксически правильно. Я почти у цели.
Не в сети
Если убрать из конструкции
->having('count', '=', count($parameters))
то и лишний знак вопроса в конце запроса пропадает.
Причём даже если ->having(\DB::raw('`count` = ' . count($parameters))) - знак вопроса всё равно добавляется.
Что за ошибка и почему?
Не в сети
Страницы 1