Как выбрать данные, которые включают номер сотрудника

У меня есть поле сотрудников, назначенных для проекта, но это поле хранит данные в виде массива, как этот ["741852963","79545236","7845120"]. Я хочу знать, есть ли способ выбрать все проекты, назначенные сотруднику, выполняя запрос с помощью Eloquent.

Я пытаюсь сделать на like, но не работает: /

 $project = SupervisorProject::where('assigned', 'like', '%741852963%')->where('visible', 'Y')->orderBy('id','DESC')->get();

Я надеюсь, что кто-то может мне помочь

Какой тип столбца в базе данных?

El_Vanja 30.03.2021 19:43

@El_Vanja Я установил как текст

cesdav 30.03.2021 19:46

Не понимаю, почему это не сработает. Исключает ли случайно эту строку другое условие? Кроме того, если это вообще возможно, подумайте о реструктуризации базы данных и нормализации данных. Хранение любой строки с разделителями - это плохая идея.

El_Vanja 30.03.2021 19:51

Здесь вы можете видеть, что файл необработанный SQL работает. И я не вижу ничего плохого в синтаксисе Eloquent.

El_Vanja 30.03.2021 20:04

Это также будет проблематично, если номера ваших сотрудников различаются по длине, поскольку один может быть подстрокой другого. Вам определенно нужно нормализовать данные или, по крайней мере, использовать столбец JSON и хранить массив JSON и полагаться на JSON, где предложения. Обратите внимание, что столбцы JSON на самом деле не индексируются, насколько мне известно, поэтому запросы к ним могут быть медленными.

apokryfos 30.03.2021 20:05

@El_Vanja ну на самом деле было другое условие. но теперь я застрял в вопросе, есть ли у другого человека такой же номер сотрудника, который он принесет в этот другой проект, я имею в виду, что если это похоже на этот ["74185296366","79545236","7845120"], помните, что сотрудник, которого я ищу, это 741852963

cesdav 30.03.2021 20:31

@El_Vanja, как я могу выбрать более конкретный запрос?

cesdav 30.03.2021 20:33

Если все номера ваших сотрудников указаны в кавычках, вы можете включить кавычки в значение, которое вы предоставляете LIKE. Но все это побочный эффект отсутствия нормализованных данных. Вы просто будете биться о стену, когда потребуется выполнить какой-либо относительно сложный поиск.

El_Vanja 30.03.2021 22:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
8
51
1

Ответы 1

Массив по-прежнему действителен JSON, поэтому JSON, где предложения может работать, вы можете попробовать это:

return SupervisorProject::whereJsonContains('assigned', '741852963')
    ->where('visible', 'Y')
    ->orderBy('id','DESC')
    ->get();

Другие вопросы по теме