如何拉取某个用户的所有帖子?我应该 foreach 某个用户的所有帖子吗?就像 user1 发布了一些东西,我想提取他发布的任何内容,并且只在他登录时显示。
问问题
48 次
1 回答
0
在 Laravel 中,如果你使用 Eloquent 关系,事情会看起来像这样。
首先,定义模型中的关系。如果您遵循下面的示例,我将假设以下内容。
您在数据库中的 users 表名为
users
。您在数据库中的帖子表名为posts
,并且有一个整数列,名称user_id
对应于帖子所属用户的 id。如果您的表名和列名不同,请务必阅读Laravel 文档以了解如何为 Eloquent 模型设置自定义表名和列名。
应用程序/模型/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 方法。
于 2013-11-14T03:14:42.657 回答