У меня есть поле сотрудников, назначенных для проекта, но это поле хранит данные в виде массива, как этот ["741852963","79545236","7845120"]. Я хочу знать, есть ли способ выбрать все проекты, назначенные сотруднику, выполняя запрос с помощью Eloquent.
Я пытаюсь сделать на like, но не работает: /
$project = SupervisorProject::where('assigned', 'like', '%741852963%')->where('visible', 'Y')->orderBy('id','DESC')->get();
Я надеюсь, что кто-то может мне помочь
@El_Vanja Я установил как текст
Не понимаю, почему это не сработает. Исключает ли случайно эту строку другое условие? Кроме того, если это вообще возможно, подумайте о реструктуризации базы данных и нормализации данных. Хранение любой строки с разделителями - это плохая идея.
Здесь вы можете видеть, что файл необработанный SQL работает. И я не вижу ничего плохого в синтаксисе Eloquent.
Это также будет проблематично, если номера ваших сотрудников различаются по длине, поскольку один может быть подстрокой другого. Вам определенно нужно нормализовать данные или, по крайней мере, использовать столбец JSON и хранить массив JSON и полагаться на JSON, где предложения. Обратите внимание, что столбцы JSON на самом деле не индексируются, насколько мне известно, поэтому запросы к ним могут быть медленными.
@El_Vanja ну на самом деле было другое условие. но теперь я застрял в вопросе, есть ли у другого человека такой же номер сотрудника, который он принесет в этот другой проект, я имею в виду, что если это похоже на этот ["74185296366","79545236","7845120"], помните, что сотрудник, которого я ищу, это 741852963
@El_Vanja, как я могу выбрать более конкретный запрос?
Если все номера ваших сотрудников указаны в кавычках, вы можете включить кавычки в значение, которое вы предоставляете LIKE. Но все это побочный эффект отсутствия нормализованных данных. Вы просто будете биться о стену, когда потребуется выполнить какой-либо относительно сложный поиск.






Массив по-прежнему действителен JSON, поэтому JSON, где предложения может работать, вы можете попробовать это:
return SupervisorProject::whereJsonContains('assigned', '741852963')
->where('visible', 'Y')
->orderBy('id','DESC')
->get();
Какой тип столбца в базе данных?