в модели получить специфицированный c атрибут из отношения ownTo () без добавления всей коллекции - PullRequest
1 голос
/ 06 мая 2020

предположим, что я хочу получить имя автора внутри модели книги

// app/Book.php
protected $appends = ['author_name'];

public function author() {
  return belongsTo(Author::class, 'author_id');
}

public function getAuthorNameAttribute() {
  return $this->author->name;
}

, но это также добавит всю коллекцию авторов к последней коллекции книг, что увеличит время загрузки, когда пытаюсь загрузить около 100 книг, сейчас я работаю над этим, удаляя автора после получения такого имени

// app/Book.php
protected $appends = ['author_name'];

public function author() {
  return belongsTo(Author::class, 'author_id');
}

public function getAuthorNameAttribute() {
  $authorName = $this->author->name;
  unset($this->author);

  return $authorName;
}

есть ли лучший способ сделать это? или я пропустил какую-то функцию от eloquent?

Cheers

1 Ответ

0 голосов
/ 06 мая 2020

Попробуйте добавить следующий код в свое приложение / книгу. php

// app/Book.php
protected $hidden = ['author'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...