Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 09.04.2020 10:22:45

belongsto по нескольким полям

Для примера, имеются две таблицы users и params

Таблица users
id
params_status - foreign_key
params_sex - foreign_key
params_drinks - foreign_key

Таблица params
id - primary_key
name

Мне нужно получить ч/з отношение с помощью ленивой загрузки данные, вот как я делаю:

В модели users
  public function params()
  {
    return $this->belongsTo(params::class,'params_status');
  }
В контроллере
$listing = user::with('params')

Все отрабатывает, НО мне нужно получить одним запросом все параметры по всем полям params_status, params_sex и params_drinks
Можно сделать вот так:

В модели users
  public function paramsStatus()
  {
    return $this->belongsTo(params::class,'params_status');
  }
  public function paramsSex()
  {
    return $this->belongsTo(params::class,'params_sex');
  }
  public function paramsDrinks()
  {
    return $this->belongsTo(params::class,'params_drinks');
  }
И потом их вызывать в контроллере, но это увеличение запросов к БД, да и мне кажется не по феншую.

Гулешь не помог, ответа нигде не смог найти, вот пишу сюда.

Не в сети

#2 09.04.2020 10:52:01

Re: belongsto по нескольким полям

Разобрался, можно сделать как я описал выше несколько отношений и вызывать их вот так:

user::with('paramsSex','paramsStatus','paramsDrinks')

Не в сети

Подвал раздела