Как реализовать сопоставление таблицы настроек к конкретной записи?

Как в проекте Laravel реализовать сопоставление в модели с таблицей настроек?
Пример - есть таблица User
Id, Name
и таблица Settings
Id, Param, Value, UserId
Направьте, куда копать. Чтобы из модели User получить связанные настройки для этого пользователя.

Думаю, что нужно иметь модель Settings например такую:

class Settings {
 
   protected $param1
   protected $param2
 
}
 
class User {
 
   protected $name
   protected $settings
 
}

И как работать работать из модели User с различными параметрами, связанными только с эти пользователем?
Может это паттерн, и у него есть название?
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro
frontend developer
Модель следует назвать Setting
Таблицу settings
Сделать вторую таблицу setting_user
user_id | setting_id

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

Далее курить доку на предмет связи many-to-many

У юзера создать отношение
public function settings() {
  return $this->belongsToMany(Setting::class);
}

Теперь у пользователя вы можете получить все его настройки

$user->settings

Создать новую

$user->settings->create([...])

И т.д.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы