我如何检索 [=10th=] 编辑了 post 的用户
How can i retreive the user who posted the post
我正在通过开发一个小型博客来学习 laravel。我已经创建了所有必要的关系。但是我无法获得最初创建 post 的用户的名称。
我试过了
$post->user->name;
但是这个 returns null
,但是如果我这样做
$post->user->id
它 returns 创建 post
的用户的 id
我的post模型有这种关系
# Post.php
public function user()
{
return $this->belongsTo('App\Post');
}
我的用户模型有这种关系
# User.php
public function posts()
{
return $this->hasMany('App\Post');
}
我想要的结果是如果我写
$post->user->name
它应该显示用户名
现在我通过使用此语句得到类似的结果:
{{ \App\User::find($post->user_id)->name }}
修正你的关系定义。 Post
模型应该指向User
模型:
Post.php
use App\User; // <----
// ...
public function user()
{
return $this->belongsTo(User::class);
} // ^^^^^^^^^^^
此外,您不应该直接从前端进行查询,而是尝试 eager loading 后面的关系,然后 return 对象到视图:
PostController.php
public function show(Request $request)
{
$post = Post::with('user')->find(1);
// ^^^^^^^^^^^^
return view('my_view')->with('post', $post);
}
那么在你看来你直接使用这个对象就可以了:
my_view.blade.php
<h1> {{ $post->user->name }} </h1>
Post
模型上的这个relationship
是错误的:
public function user()
{
return $this->belongsTo('App\Post');
}
应该是:
public function user()
{
return $this->belongsTo('App\User');
}
有了 $post->user->name
视图中的关系应该开箱即用。
如果您要检索单个 Post
,则不需要 eager load User
,eager load 能够在您获得 posts
的 collection
和关联的 users
时减少所需的查询。
如果你得到一个 single Post
带有预加载的 User
或没有查询是相同的。
我正在通过开发一个小型博客来学习 laravel。我已经创建了所有必要的关系。但是我无法获得最初创建 post 的用户的名称。
我试过了
$post->user->name;
但是这个 returns null
,但是如果我这样做
$post->user->id
它 returns 创建 post
的用户的 id我的post模型有这种关系
# Post.php
public function user()
{
return $this->belongsTo('App\Post');
}
我的用户模型有这种关系
# User.php
public function posts()
{
return $this->hasMany('App\Post');
}
我想要的结果是如果我写
$post->user->name
它应该显示用户名
现在我通过使用此语句得到类似的结果:
{{ \App\User::find($post->user_id)->name }}
修正你的关系定义。 Post
模型应该指向User
模型:
Post.php
use App\User; // <----
// ...
public function user()
{
return $this->belongsTo(User::class);
} // ^^^^^^^^^^^
此外,您不应该直接从前端进行查询,而是尝试 eager loading 后面的关系,然后 return 对象到视图:
PostController.php
public function show(Request $request)
{
$post = Post::with('user')->find(1);
// ^^^^^^^^^^^^
return view('my_view')->with('post', $post);
}
那么在你看来你直接使用这个对象就可以了:
my_view.blade.php
<h1> {{ $post->user->name }} </h1>
Post
模型上的这个relationship
是错误的:
public function user()
{
return $this->belongsTo('App\Post');
}
应该是:
public function user()
{
return $this->belongsTo('App\User');
}
有了 $post->user->name
视图中的关系应该开箱即用。
如果您要检索单个 Post
,则不需要 eager load User
,eager load 能够在您获得 posts
的 collection
和关联的 users
时减少所需的查询。
如果你得到一个 single Post
带有预加载的 User
或没有查询是相同的。