Почему не выполняется запрос?

SELECT TOP (1000) [id], [shortname], [name], [sptip], 
    (SELECT COUNT([pid]) FROM [TableB] as B WHERE B.[pid] = A.[id]) as child 
  FROM [TableA] as A 
  WHERE A.pid IS NULL AND A.active = 1 
  ORDER BY A.sptip

Он выполняется и выводит то, что мне нужно. Но когда я использую в коде, то получаю ErrorException и непонятно из-за чего.
public function getStructure(Request $request) {
        if (is_null($request->get('id'))) {
            $query = "SELECT TOP (1000) [id], [shortname], [name], [sptip], (SELECT COUNT([pid]) FROM [TableB] as B WHERE B.[pid] = A.[id]) as child FROM [TableA] as A WHERE A.pid IS NULL AND A.active = 1 ORDER BY A.sptip";
            $rows = DB::SELECT(DB::RAW($query));
            dd($rows);
        }
    }


Но я заметил, если убрать вложенный запрос, то всё работает
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
@shaniyazovdamir Автор вопроса
Во вложенном запросе надо заменить с названия столбца на *
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@SrnkWeb
is_null Возвращает true, если значение value равно null, или false в противном случае. Может тут загвоздка в том что по условию if (is_null($request->get('id'))) прилетает не пустое значение is_null возвращает false и тело блока if не срабатывает, перед is_null поставьте восклицательный знак if (!is_null($request->get('id')))
Ответ написан
tsklab
@tsklab
Здесь отвечаю на вопросы.
Поставьте префиксы таблиц к полям (не экономьте клавиатуру). Тем более у вас в разных таблицах одинаково названные столбцы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы