@volodyalesha86

Как в отношениях Laravel синхронизировать несколько колонок таблицы?

Всем привет!

Как в отношениях Laravel синхронизировать несколько колонок таблицы?

Есть таблица users и модель User с объявленными отношениями к таблице users_params и модели UserParam:
public function syncParams()
    {
        return $this->belongsToMany(UserParam::class, 'users_params', 'user_id', 'field1');
    }

В таблице users_params имеются следующие колонки: id,user_id,field1,field2
Синхронизацию провожу так:
$user = User::find(2022);
        $test = [['field1'=>'Test1','field2'=>'Test2'],['field1'=>'Test3','field2'=>'Test4']['field1'=>'Test5','field2'=>'Test6']];
        $user->syncParams()->sync($test);

При синхронизации происходит непонятным образом, первые данные('field1'=>'Test1','field2'=>'Test2') всегда улетают в никуда, остаются всегда два последних массива.

Подскажите, как можно создавать, обновлять/синхронизировать несколько колонок в таблице?
Выше описанный метод идеально работает для одной колонки, но с двумя не работает.
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
@volodyalesha86 Автор вопроса
Решил проблему так:
Добавил в таблицу users_params еще одну колонку field_id и и сделал ее PRIMARY_KEY как и колонку ID: id,field_id,user_id,field1,field2
В модели User прописал следующее:
return $this->belongsToMany(UserParam::class, 'users_params', 'user_id', 'field_id');

Теперь все синхронизируется идеально, по ID идет автоинкрементация, по FIELD_ID идет подсчет полей у каждого юзера.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы