Отношения Laravel ManyToMany и присоединение без сводной таблицы из массива полей ввода

У меня есть Пользователи и Операторы, и у каждого Пользователя может быть только один оператор, а у Оператора может быть много пользователей

Итак, в модели оператора у меня есть:

public function profile() {
  return $this->hasMany(User::class);
}

И в модели пользователя у меня есть:

public function operator() {
  return $this->hasOne(Operator::class);
}

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

Теперь, если у меня есть поле ввода для управления операторами, и у меня есть поле множественного выбора, поэтому я могу выбрать многих пользователей для добавления к этому оператору, поле ввода будет примерно таким:

<select name = "profiles[]" id = "profiles" multiple = "multiple" class = "multiselect2 form-control">
  @foreach($profiles as $key => $profile)
  <option value = "{{ $profile->id }}">{{ $profile->name }} {{ $profile->lastname }}</option>
  @endforeach
</select>

При отправке формы будет опубликован массив всех выбранных профилей $ (это пользователи из пользовательской таблицы)

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

у меня есть таблица operators, и она должна содержать идентификаторы операторов и идентификаторы управляемых пользователей

+----+-------------+---------+
| id | operator_id | user_id |
+----+-------------+---------+
|  1 |           3 |      23 |
|  2 |           3 |      28 |
|  2 |           3 |      36 |
+----+-------------+---------+

Итак, как я могу добавить (прикрепить или подключить) идентификаторы пользователей операторов и управляемых пользователей в таблице операторов?

Вот мой текущий код контроллера

  $user = new User;

  $user->name = $request->name;
  $user->email = $request->email;
  $user->password = bcrypt($request->password);

  $user->save();

  $user->operator()->attach(['operator_id' => $user->id,  'profile_id' => $request->profiles]);
Стоит ли изучать 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 и хотите разрабатывать...
0
0
240
1

Ответы 1

Просто используйте красноречивый, чтобы сделать соединение.

DB::select("SELECT * FROM Users u
INNER JOIN operators o dp ON u.id = o.user_id;");

Просто убедитесь, что вы выполняете соединения для каждой таблицы, которую вам нужно подключить.

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