Красноречивый метод сохранения связывает отношение с экземпляром модели? - PullRequest
0 голосов
/ 05 мая 2020

Я хотел бы знать, если после:

$post = Post::find(1);
$author = new Author($someData);
$post->author()->save($author);

следующий код лениво загружает автора?

$authorName = $post->author->name;

Чтобы уточнить сообщение, автор имеет отношение OneToOne.

Если я использую:

dump($post);

, вывод не содержит автора и показывает следующее:

#relations: []

Тот же результат с использованием $ post-> author () -> createMany () method

Поэтому я хочу быть уверенным, что он не делает лишних запросов для загрузки автора, поскольку он у меня уже есть в памяти.

laravel / framework: 5.4. *

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Вы можете сделать что-то подобное, если действительно хотите. Вы можете использовать setRelation.

$post = Post::find(1);

$author = Author::create($someDataWithPostId); // save the author instance to the database.

$post->setRelation('author', $author); // set relation method will set the author as author relation.

Теперь, когда вы обращаетесь к $authorName = $post->author->name;, он не будет загружаться из базы данных, поскольку мы уже установили отношение автора к данным к сообщению.

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

Попробуйте нетерпеливую загрузку с помощью примера функции

$post= Model::with('author')->find(id);

, затем позвольте вашему реляционному методу One To One Имя быть «author» в модели публикации, вы можете найти его по dd($post->author->name)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...