Добрый день. Есть запрос такого вида: PHP: $query->select(); $query->from('Database DT'); $query->leftjoin('Users AS US', 'DT.Name = US.Id'); //$query->where(['not', ['DT.Name' => null]]); $query->orderBy('DT.Start_date DESC'); $query->limit(1); $result = $query->all(); if(count($result) > 0){ return $result; }else{ return false; } В данном случае если вдруг поле DT.Name будет пустое (NULL) то выйдет ошибка Ошибка при преобразовании строки символов в тип uniqueidentifier Подскажите как прописать если DT.Name == NULL то и вывести NULL а не пытаться вытянуть данные из таблицы Users.
так условие пропиши дополнительное, чтоб для таких не искал Код (Text): $query->where(['not', ['DT.Name' => null]]); только синтаксис не знаю для твоего билдера для чистого запроса - NOT DT.name IS NULL
@ADSoft В том то и дело он должен найти даже с нулем, просто не пытаться подставить значение. Пробовал так написать, серавну шляпа с этой ошибкой: PHP: $query->select(); $query->from('Database DT'); $subQuery = $query2->select('FIO')->from('Users AS US')->where('DT.Name = US.Id'); $query->leftjoin('Users AS US', 'DT.Name = US.Id'); //$query->where(['not', ['DT.Name' => null]]); $query->where(['not exists', $subQuery]); $query->orderBy('DT.Start_date DESC'); $query->limit(1); $result = $query->all(); if(count($result) > 0){ return $result; }else{ return false; }
@Artur_hopf как интересно ты условие left join записываешь! Так работает?! Вообще-то в элоквент принято писать всё раздельно: https://laravel.com/docs/5.7/queries#joins ->leftJoin('posts', 'users.id', '=', 'posts.user_id') --- Добавлено --- Поиск пустого или непустого значения делают через whereNull() и whereNotNull() Смотри те же доки. --- Добавлено --- Перенес тему в Laravel. обознался, потом исправился. Как по мне, если бы вопрос касался базы, а не конкретного построителя запросов, то надо было отлаживать запрос на чистом SQL.
@artoodetoo не, я разобрался. Там была проблема в том что тип столба DT.Name был nvarchar, переделал его в uniqueidentifier и ошибка ушла. Я в yii2 пример привел, там так можно =)