dark_tke
@dark_tke
Разработчик ИС для образования (php, laravel, 1c)

Оптимизация БД. Как сделать запрос отношений и формирование поля в одном запросе?

Приветствую коллеги, суть такова, есть модель с отношениями которая ссылается сама на себя

public function getUnitedNameAttribute()
	{
		$additional_name = $this->dependantGroup()->get();
		$name = $this->name;
		return  $name . (($additional_name->count() > 0) ? " / " .$additional_name->first()->name : "");
 	}

    public function dependantGroup()
	{
		return $this->hasOne(Group::class, 'united_with');
	}
 	public function parentGroup()
	{
		return $this->belongsTo(Group::class,'id');
	}

И все нормально работает, но проблема в том, что в случае если мы запрашиваем группу значений, для каждого отдельного элемента создается новый запрос, который и формирует объединенное имя. Вопрос: Как можно изменить(дополнить) данный код, чтобы формировать нужные данные одним или несколькими запросами, но никак не сотней. Я покопался, но пока в голову откровенно ничего не приходит.

Может есть возможность как то через скоупы это дело собрать, но честно говоря не совсем понимаю как.
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Kostik_1993
Fullstack Web Developer | PHP | Laravel | Vue.js
Вам нужно использовать метод with() если я правильно вас понял
$groups = Group::with('dependantGroup', 'parentGroup')->get();
Ответ написан
Ваш ответ на вопрос

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

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