Я новичок в Laravel. В представлении у меня есть форма с выпадающим меню, в котором много участников. Когда форма отправлена, значение участника (например, «7») отправляется в контроллер, в котором есть запрос, который должен извлечь из БД все строки, которые имеют «7» в столбце «id_participants». К сожалению, в столбце «id_participants» есть строки в этом формате «3; 8; 65; 4; 34».
Я пытался решить эту проблему разными способами, но мне удалось получить только те строки, у которых запись равна «7».
public function fetch_table(Request $request)
{
$this->validate($request, [
'participants' => 'required',
'start_date' => 'required|date',
'end_date' => 'required|date',
'rooms' => 'required',
]);
$start_date = $request['start_date'];
$end_date = $request['end_date'];
$participants = $request['participants'];
$room = $request['rooms'];
$rooms = Room::all();
$users = User::all()->where('is_active', '1')->sortBy('surname');
$meetings = Meeting::all()
->where('is_active', '1')
->where('id_room', $room)
->where('date', '<', $end_date)
->where('date', '>', $start_date)
->where('id_participants', $participants); //look at here
return view('reportArea', compact('users','rooms','meetings'));
}
Итак, наконец-то я смогусделать аналогичный запрос: SELECT * FROM meetings WHERE id_participants like "%;7" or id_participants like "7;%" or id_participants like "%;7;%" or id_participants = 7
. Очевидно, 7 только пример ... запрос должен быть динамическим. Кто-нибудь может мне помочь?
ОБНОВЛЕНИЕ:
Я решил эту проблему после многих попыток замены запроса "встречи" следующим:
$meetings = DB::table('meetings')
->where('is_active', '1')
->where('id_room', $room)
->where('date', '>', $start_date)
->where('date', '<', $end_date)
->where(function ($query) use($participants) {
$query->where('id_participants', $participants)
->orWhere('id_participants', 'like', '%;'.$participants)
->orWhere('id_participants', 'like', $participants.';%')
->orWhere('id_participants', 'like', '%;'.$participants.';%');
})
->get();