Laravel syncWithoutDetaching и дополнительные данные

Я погуглил, и я не вижу, чтобы кто-то обсуждал это, но у меня есть подозрение, что метод Laravels syncWithoutDetaching() не принимает никаких параметров для дополнительных данных, таких как save(), sync() и attach()?

Кто-нибудь знает это? В документации API метод имеет следующие параметры:

array syncWithoutDetaching(Collection|Model|array $ids)

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
6
0
7 258
2

Ответы 2

sync() и syncWithoutDetaching() оба не имеют параметра для дополнительных значений, вы должны передать дополнительные значения в виде массива с идентификаторами.


Согласно документы:

You may also pass additional intermediate table values with the IDs:

$user->roles()->sync([
    1 => ['expires' => true],
    2,
    3
]);


Если вы посмотрите здесь, вы увидите, что syncWithoutDetaching() просто вызывает sync(), но передает false в качестве второго аргумента.

В вашем случае это будет примерно так:

$event->guests()->syncWithoutDetaching([
    1 => ['attending' => true],
    2 => ['attending' => false]
])

Я думаю, что ответ @remul — лучший, но он требует дополнений для таких людей, как я, которые попадают на эту страницу.

syncWithoutDetaching() - это просто сокращение от sync() - здесь. Это соответствует sync($data, false)

Документация переговоры о другом замечательном методе:

If you would like to insert the same intermediate table values with each of the synced model IDs, you may use the syncWithPivotValues method

Но в документации не сказано, что метод принимает третий аргумент, что как раз соответствует логике syncWithoutDetaching().

Смотри здесь. Если вы пройдете false, непройденные идентификаторы не будут отсоединены.

Я думаю, что вопрос был об этом.

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