如何提取某个用户的所有帖子?我应该预先指定某个用户的所有帖子吗?就像user1发布了一些东西,我想要提取他发布的内容,并且只在他登录时显示。
答案 0 :(得分:0)
在Laravel中,如果你使用Eloquent关系,那么事情就会像这样。
首先,在模型中定义您的关系。如果您按照以下示例进行操作,我将假设以下内容。
数据库中的用户表名为
users
。你的帖子表 数据库名为posts
,并且有一个名为user_id
的整数列 对应于帖子所属的用户的id。如果你的 表格和列名称不同,请务必阅读Laravel docs,了解如何为其设置自定义表名和列名 雄辩的模特。
应用/模型/ user.php的强>
<?php
class User extends Eloquent {
// All the default User.php stuff....
public function posts()
{
return $this->hasMany('Post');
}
}
应用/模型/ post.php中强>
class Post extends Eloquent {
public function user()
{
return $this->belongsTo('User');
}
}
在我们定义了这些关系之后,您可以使用类似的东西来获取特定用户。
$user = User::find(1); // This will get the user with an ID of one.
然后,您检索该用户的帖子,我们可以使用我们之前定义的Eloquent关系。
$posts = $user->posts()->all();
如果用户已登录,您可以使用Auth
类为登录用户执行此操作。
$posts = Auth::user()->posts()->all();
您现在意识到->posts()
实际上返回了一个Collection,您可以正常使用该集合上的所有Query和Eloquent方法。