These are chat archives for LaravelRUS/chat

30th
Jul 2018
Андрианов Сергей
@Batisska
Jul 30 2018 13:04
в контроллере 

$id_supplier = ['421000'];

$results =  Product::whereHas('id_supplier', function ($query) use ($id_supplier) {
            $query->whereRaw('LOWER(id_supplier) LIKE \'%' . mb_strtolower($id_supplier[0]). '%\'');
        });

dd($results->toSql());

select * from products where exists(
                               select * from products_suppliers_links
                               where products.id = products_suppliers_links.product_id 
                               and lower(products.id_supplier) like B1000%)
Первые две цифры переводит в букву B непонятно почему. Кто нибудь сталкивался с такой ситуацией? Как решить проблему.
Ваня Devium
@webdevium
Jul 30 2018 15:21
@Batisska файл точно в utf8? А id в массиве руками прописано или получается с базы? В общем, прогнал на всех тестовых стендах - полет нормальный. Возможно, тут проблема в драйвере для базы, хотя whereRaw не должен ничего интерполировать...
Андрианов Сергей
@Batisska
Jul 30 2018 15:24
@webdevium $id_supplier здесь руками прописал а так дергается из инпута но когда LIKE \'%' . mb_strtolower($id_supplier[0]). '%\'' вот сюда вставляется то норм идёт 421000 а вот уже на toSql like B1000%
Ваня Devium
@webdevium
Jul 30 2018 15:26
@Batisska а ну ради чисто поржать, напиши mb_strtolower((int)$id_supplier[0]);
Андрианов Сергей
@Batisska
Jul 30 2018 15:26
такой же эффект
@webdevium \'%' . вот если процент убрать то норм залетает
Ваня Devium
@webdevium
Jul 30 2018 15:27
postgres?
Андрианов Сергей
@Batisska
Jul 30 2018 15:27
@webdevium LIKE ' . mb_strtolower($id_supplier[0]). '%\''
Да postgres
Ваня Devium
@webdevium
Jul 30 2018 15:27
вечно с ним какая-то хня происходит
я вот только понять не могу, если у тебя в id_supplier - числа, на кой тебе вообще lower в базе и mb_strtolower?
Андрианов Сергей
@Batisska
Jul 30 2018 15:29
не только числа
+7545R может быть
любые вообще символы могут быть
Ваня Devium
@webdevium
Jul 30 2018 15:31
"LOWER(id_supplier) LIKE '%" . mb_strtolower($id_supplier[0]). "%'''
вот так попробуй
Андрианов Сергей
@Batisska
Jul 30 2018 15:32
@webdevium Пробовл уже))) не помогает
Ваня Devium
@webdevium
Jul 30 2018 15:34
ну тогда последний вариант - cast или convert в базе (не помню какой метод в слоне)
получится типа concat('%', CONVERT(blabla to STRING), '%')
как-то так
если не - я не помогу, с таким в слоне не сталкивался
та и запросы я так не формирую никогда
я за join с их красотой и скоростью
Андрианов Сергей
@Batisska
Jul 30 2018 15:41
@webdevium Ладно попробую уже правда завтра ))
а то пора спасаться от жары))
и бегом домой
Ваня Devium
@webdevium
Jul 30 2018 15:41
узбехов в попытках
у тебя все получится
Андрианов Сергей
@Batisska
Jul 30 2018 15:42
@webdevium Спасибо ))
Zlatoslav Desyatnikov
@zlodes
Jul 30 2018 16:11
@Batisska, а как в запросе получилось products.id_supplier из whereRaw? Элоквент разве проставляет названия таблиц (или алиасы) в raw?