Sync синхронизирует,но удаляет другие записи в бд,что нужно чтобы новые записи синхронизировались только для текущего пользователя?

Для того чтобы новые записи синхронизировались только для текущего пользователя в 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 для каждой из них, чтобы они были связаны только с текущим пользователем.

В результате, только новые записи будут синхронизированы для текущего пользователя без удаления других записей в базе данных.