У меня есть 2 модели: Post
и User
, где у каждой Post
есть одна User
, а у каждой User
много Post
.
Пользователь.php:
// User.php
public function posts()
{
return $this->hasMany(Post::class);
}
Пост.php:
// Post.php
public function user()
{
return $this->hasOne(User::class);
}
Загружаю пост через свой PostsController
:
// PostsController.php
public function show($id)
{
$post = Post::find($id);
return view('posts.show', compact('post'));
}
В представлении я звоню как сообщению, которое я загрузил в , так и пользователю, имеющему отношение к сообщению. Я делаю несколько вызовов пользовательскому объекту:
// views/posts/show.blade.php
<h1>{{ $post->title }}</h1>
<p>{{ $post->user->name }}</p>
<p>{{ $post->user->email }}</p>
Будут ли эти 2 обращения к ресурсу $post->user
выполнять 2 обращения к базе данных?
Как отношения Eloquent работают на бэкэнде? Отношение всегда возвращает весь объект user
, когда я получаю объект post
, или оно лениво получает данные user
?
Меня беспокоит размещение моей базы данных у поставщика, который взимает плату на основе данных, переданных из базы данных (GCP), и я не понимаю, как отношения Eloquent будут вызывать базу данных.
$post->user
- person ljubadr   schedule 20.10.2017