Anton
А для чего тебе мокать request?
Евгений
Кстати о тестировании, как начать тестировать?
Anton
Кстати о тестировании, как начать тестировать?
Сначала начать страдать в каждом коммите ломая что нибудь
Anton
Всего один маленький коммит
Vitalii
А для чего тебе мокать request?
самописный гвард выдирает из реквеста хедер authorization
Anton
самописный гвард выдирает из реквеста хедер authorization
Ну тут вопрос должен ли он вообще знать о реквесте.
Vitalii
Например ларавелевский сешнгвард знает
Anton
И можно ли ему уже готовые данные отдать из request так чтобы уменьшить зависимость guard от реквеста
Vitalii
он же на основе этого юзера выдает
Anonymous
Здравствуйте ребята. Не получается поиск заставить правильно искать. Подкажите что не так делаю.
Anonymous
`function mkb10q(Request $request){ $data = []; if($request->has('q')){ $search = $request->q; $data = DB::table("mkbs") ->select("id","text","value") ->where('text','LIKE',"%$search%" ) ->orWhere('value','LIKE',"%$search%") ->whereRaw("value REGEXP('^Q[0-9]{2}\.[0-9]')") ->limit(10) ->get(); } return response()->json($data); }`
Vitalii
ару
Anonymous
Anonymous
Anonymous
Поиск должен искать только по коду Q который вначале
Vitalii
Да ну это придется везде где нужно юзера получать - самому выдирать хедер
Anton
Тупые толстые уродливые контроллеры
Anton
Да ну это придется везде где нужно юзера получать - самому выдирать хедер
А если посмотреть как ларавелевский гвард протестирован?
Vitalii
а там разве тесты сть?)
Anonymous
Что за мода весь код писать в контроллере
А куда его писать ? Я просто новичок.
Anton
А куда его писать ? Я просто новичок.
В модель к примеру. Но видимо ты о них ничего не знаешь раз делаешь запрос к таблице
Anton
А контроллер обратится к методу модели
Anton
Или методу сервиса который будет содержать эту логику
Anonymous
В модель к примеру. Но видимо ты о них ничего не знаешь раз делаешь запрос к таблице
Знаю немного, но этот код уже был до меня. Т.е писали другие люди. Он работает но немного неправильно.
Anton
Явно же написано
Anton
Что делает первый where? Где и как он ищет словами можешь сказать?
Anton
На скрине f нашелся в названии болезни
Anton
Идёт поиск по полю name
Anonymous
На скрине f нашелся в названии болезни
Да, это неправильно. Должен искать только по коду Q.
Anton
Окай. Ты хочешь сделать поиск только по коду болезни?
Anton
У тебя есть таблица mkbs как справочник болезней. Есть ли там колонка кода болезни?
Anonymous
Окай. Ты хочешь сделать поиск только по коду болезни?
Мне нужно чтобы вытащил все болезни которые имеют код Q
Anton
И там только код болезни?
Anton
Или ещё что то
Anonymous
Или ещё что то
Вот таблица
Anton
function mkb10q(Request $request){ $data = []; if($request->has('q')){ $search = $request->q; $data = DB::table("mkbs") ->select("id","text","value") ->where('value','LIKE',"%$search%") ->whereRaw("value REGEXP('^Q[0-9]{2}\.[0-9]')") ->limit(10) ->get(); } return response()->json($data); }
Anton
Блин, короче неудобно на телефоне
Anton
Убери первый where, он делает поиск по полю text
Anton
Написано же явно
Anton
->where('text','LIKE',"%$search%" ) делает поиск по полю текст где названия а не коды болезней
Anonymous
Может я неправильно объяснил. Если убрать первый where то ищет только по коду Q т.е Убрал ввожу в поле поиска Q выводит болезни с кодом Q. А если ввожу просто название болезни то не ищет.
Anonymous
Мне нужно чтобы и по названию и по коду Q искал.
Illia
orWhere?
Anton
Мне нужно чтобы и по названию и по коду Q искал.
Это как? Он у тебя сейчас так и ищет же. Ввел f и нашлась болезнь с буквой f
Anonymous
Anton
Ааа
Anton
Понял теперь. Ну тут либо regexp
Anton
Его бы потестировать
Anton
Там где whereRaw с Q добавь пораметров пустой массив и 'or'
Не не, там же надо чтобы это условие вместе работало. По-моему тут andWhereRaw
Maksim (Ellrion)
Не не, там же надо чтобы это условие вместе работало. По-моему тут andWhereRaw
А я так понял что каждое условие поиска он хочет сделать независимым. Тоесть поиск по любому из условий
Anton
Распалось гиттер комьюнити (
Maksim (Ellrion)
А ты чего в Дискорд не бываешь?
В телеге как то удобнее. А кучу месенджеров не люблю
Anton
Не помню
Anton
Пока кажется что твоя регулярная не работает
Anton
Я бы ее потестировал
Maksim (Ellrion)
В Ларавел есть такой метод? В доках не нашел
Ты прочитал что я писал? Это не подходит или неверно понял я тебя все же
Maksim (Ellrion)
Да прочитал, но не понял куда добавить.
Мде. Лучше бы перечитал как саму задачу я понял. А понял ее я неверно. Я вчитался в то что ты писал. И теперь точно понял) Тебе надо два первых where в "скобки" убрать. Тоесть ->where(function($q){ $q->... Тут два поиска которые с лайк})->whereRaw...
Maksim (Ellrion)
Нет. Я же тебе написал код.
Anonymous
Нет. Я же тебе написал код.
Вот так ->where(function($q){ $q-> 'text','LIKE',"%$search%", 'value','LIKE',"%$search%" })
Anonymous
Получаю такую ошибку
Dante
про плейсходеры что то знаешь?
Dante
$search просто переменную третим аргементом передавай
Dante
без кавычек и %
Dante
https://laravel.com/docs/5.6/queries#parameter-grouping
Dante
$q->'text','LIKE' тут что то не так)
Azer 🌚
ребят, svg файл похоже на сервере кэшировался как же обновить его? удаляю даже, все равно по прямому пути файл открывается
Vitalii
Есть пакет в котором гвард, этому гварду нужно получать токен. Я сделал интерфейс TokenGetter и создал его реализацию в приложении. Как мне это тестировать адекватно? Сейчас добавил в реализацию статический метод create, который принимает токен, создает новый инстанс и сеттит ему токен. А дальше там проверки, если токен установлен, то отдаем его, а не тянет с реквестов. Но что то мне кажется что это костыль еще тот. Есть варианты как это сделать нормально?
Vitalii
По хорошему же пакет вообще отдельно тестить нужно. Как быть, когда есть интерфейсы, которые завязаны на приложении? Т.е. без самого приложения никак не протестить, но как бы и тестить полностью отдельно нужно.