Anton
А для чего тебе мокать request?
Евгений
Кстати о тестировании, как начать тестировать?
Anton
Всего один маленький коммит
Anton
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);
}`
Anton
Vitalii
ару
Anonymous
Anonymous
Anonymous
Поиск должен искать только по коду Q который вначале
Anton
Vitalii
Да ну это придется везде где нужно юзера получать - самому выдирать хедер
Anton
Тупые толстые уродливые контроллеры
Anton
Vitalii
а там разве тесты сть?)
Anonymous
Anton
А контроллер обратится к методу модели
Anton
Или методу сервиса который будет содержать эту логику
Anton
Anton
Явно же написано
Anton
Что делает первый where? Где и как он ищет словами можешь сказать?
Anton
На скрине f нашелся в названии болезни
Anton
Идёт поиск по полю name
Anton
Окай. Ты хочешь сделать поиск только по коду болезни?
Anton
У тебя есть таблица mkbs как справочник болезней. Есть ли там колонка кода болезни?
Anonymous
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?
Anonymous
Anton
Ааа
Anton
Понял теперь. Ну тут либо regexp
Anton
Его бы потестировать
Maksim (Ellrion)
Anton
Anton
Распалось гиттер комьюнити (
Anonymous
Anton
Не помню
Anton
Пока кажется что твоя регулярная не работает
Anton
Я бы ее потестировал
Anonymous
Maksim (Ellrion)
Да прочитал, но не понял куда добавить.
Мде. Лучше бы перечитал как саму задачу я понял. А понял ее я неверно. Я вчитался в то что ты писал. И теперь точно понял)
Тебе надо два первых where в "скобки" убрать. Тоесть
->where(function($q){ $q->... Тут два поиска которые с лайк})->whereRaw...
Anonymous
Maksim (Ellrion)
Нет. Я же тебе написал код.
Anonymous
Нет. Я же тебе написал код.
Вот так ->where(function($q){ $q->
'text','LIKE',"%$search%",
'value','LIKE',"%$search%"
})
Anonymous
Anonymous
Dante
про плейсходеры что то знаешь?
Anonymous
Dante
$search просто переменную третим аргементом передавай
Dante
без кавычек и %
Dante
https://laravel.com/docs/5.6/queries#parameter-grouping
Dante
$q->'text','LIKE' тут что то не так)
Maksim (Ellrion)
Azer 🌚
ребят, svg файл похоже на сервере кэшировался как же обновить его? удаляю даже, все равно по прямому пути файл открывается
Vitalii
Есть пакет в котором гвард, этому гварду нужно получать токен. Я сделал интерфейс TokenGetter и создал его реализацию в приложении.
Как мне это тестировать адекватно?
Сейчас добавил в реализацию статический метод create, который принимает токен, создает новый инстанс и сеттит ему токен. А дальше там проверки, если токен установлен, то отдаем его, а не тянет с реквестов. Но что то мне кажется что это костыль еще тот.
Есть варианты как это сделать нормально?
Vitalii
По хорошему же пакет вообще отдельно тестить нужно. Как быть, когда есть интерфейсы, которые завязаны на приложении? Т.е. без самого приложения никак не протестить, но как бы и тестить полностью отдельно нужно.