169 похожих чатов

Такой скоуп $query->where(function ($rel) use ($newsUser, $roles) {

$rel->where(function ($q) use ($newsUser) {
$q->orWhereRaw('concat(",", word_tree.job_id, ",") like "%,0,%"');
$q->orWhereRaw('concat(",", word_tree.job_id, ",") like "%,' . $newsUser->id_job . ',%"');
})->orWhere(function ($q) use ($roles) {
foreach ($roles as $role) {
$q->orWhereRaw('concat(",", role_id, ",") like "%,' . $role . ',%"');
}
})->orWhere('office_ids', 128);
//->orWhereRaw('concat(",", word_tree.office_ids, ",") like "%,' . $newsUser->id_office . ',%"')

});
последняя строчка это моё условие там надо если не совпали первые 2 то выбрать третее оно не работает ...и как это может быть конкат внутри условия? почему это должно работатьт? там строчкой айдишники перечислены..их берём и в массив конкатим типа..это не я придумал это было так

9 ответов

12 просмотров

Ну так сделай toSql и посмотри где не пошло

И почему нужно дальше говнокодить с конкатом, а не сделать нормально?

Artem-Sir Borovinskiy Автор вопроса

вот в этом вопрос как правильно сделать чтоб выбиралось и конкатилось)))

whereIn там не подходит?

Artem-Sir Borovinskiy Автор вопроса

$query->where(function ($rel) use ($newsUser, $roles) { $rel->where(function ($q) use ($newsUser) { $q->orWhereRaw('concat(",", word_tree.office_ids, ",") like "%,' . $newsUser->id_office . ',%"'); })->orWhere(function ($q) use ($roles) { foreach ($roles as $role) { $q->orWhereRaw('concat(",", role_id, ",") like "%,' . $role . ',%"'); } })->orWhere(function ($q) use ($newsUser) { $q->orWhereRaw('concat(",", word_tree.job_id, ",") like "%,0,%"'); $q->orWhereRaw('concat(",", word_tree.job_id, ",") like "%,' . $newsUser->id_job . ',%"'); }); }); вот хотел спросить а почему он не останавливается на первом условии? и выбирает дальше там же or where тип одно из

У тебя идет 3 условия: 1) $rel->where(function ($q) use ($newsUser) { $q->orWhereRaw('concat(",", word_tree.office_ids, ",") like "%,' . $newsUser->id_office . ',%"'); }) 2) если не прошел 1ое, то срабатывает 2ое: ->orWhere(function ($q) use ($roles) { foreach ($roles as $role) { $q->orWhereRaw('concat(",", role_id, ",") like "%,' . $role . ',%"'); } }) 3) если не прошло 2ое, то срабатывает 3е: ->orWhere(function ($q) use ($newsUser) { $q->orWhereRaw('concat(",", word_tree.job_id, ",") like "%,0,%"'); $q->orWhereRaw('concat(",", word_tree.job_id, ",") like "%,' . $newsUser->id_job . ',%"'); });

Всмысле если нет то дальше?) Оно ж всегда все будет отрабатывать ибо там or🌚

Ну а зачем ему проверять по OR, если на 1ом вернуло TRUE

Вот значит надо и переписать

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта