Для того чтобы новые записи синхронизировались только для текущего пользователя в Laravel, можно воспользоваться функцией sync
в сочетании с методом wherePivot
.
Во-первых, убедитесь, что в вашей таблице промежуточной таблицы, связывающей текущего пользователя с записями, есть поле, которое указывает на пользователя. Например, пусть у вас есть таблица user_records
, содержащая поля user_id
и record_id
, связывающие текущего пользователя с записями.
Когда вы вызываете метод sync
для добавления новых записей, вы можете передать массив значений с парами ключ-значение, где ключом будет record_id
, а значением будет массив с дополнительными данными, включая user_id
, чтобы указать текущего пользователя.
Пример:
$user = Auth::user(); // Получаем текущего пользователя $newRecordIds = [1, 2, 3]; // Идентификаторы новых записей, которые хотим синхронизировать $data = []; foreach ($newRecordIds as $recordId) { $data[$recordId] = ['user_id' => $user->id]; } $user->records()->sync($data);
В данном примере мы получаем текущего пользователя с помощью Auth::user()
. Затем мы создаем массив данных $data
, в котором ключами являются record_id
новых записей, а значением является массив с единственным элементом user_id
, указывающим на текущего пользователя.
Наконец, мы вызываем метод sync
на отношении records
текущего пользователя и передаем ему массив данных $data
. Laravel выполнит синхронизацию, добавляя новые записи и устанавливая user_id
для каждой из них, чтобы они были связаны только с текущим пользователем.
В результате, только новые записи будут синхронизированы для текущего пользователя без удаления других записей в базе данных.