我的情况是,我有帖子、用户和评论。
每个评论都存储一个post_id和一个user_id。我要做的是获取用户对特定帖子的所有评论,这样我就可以进行如下调用:
$comments = Auth::User()->comments(post_id=x)->text
(我知道x是什么)
我有:
User->HasMany(comments)
Comments->HasOne(User)
Comments->HasOne(Project)
Project->HasMany(comments)
我觉得需要有一个where或have或where have或是什么东西。。我能做的最好的事情就是拉Auth::User()-
您的Comments表将具有外键Post\u Id和User\u Id
要访问来自特定用户的特定帖子的所有评论,您可以尝试这种方式吗?
Comment::select('comments.*')
->where('comments.user_id', Auth::user()->id)
->leftJoin('posts','posts.id','=','comments.post_id')
->leftJoin('users','users.id','=','comments.user_id')
->get();
我确信有更好的方法来实现它,但是这应该会给你想要的结果。
注意:如果列名冲突,请使用别名
让我知道这是否有效。
当您需要过滤您的关系时,您只需在雄辩的查询中进行过滤:
$data = User::with('posts', 'comments')
->where('users.id', Auth::User()->id)
->where('posts.id', $postID)
->get();
那你就可以
foreach($data->comments as $comment)
{
echo $comment->text;
}
with
不应用任何联接,因此不能引用其他表。
你可以用这个:
// User model
public function comments()
{
return $this->hasMany('Comment');
}
// Comment model
public function scopeForPost($query, $postId)
{
$query->where('post_id', $postId);
}
// then you can do this:
Auth::user()->comments()->forPost($postId)->get();
或者,您可以使用约束加载注释:
User::with(['comments' => function ($q) use ($postId) {
$q->where('post_id', $postId);
}])->find($someUserId);
// or exactly the same as above, but for already fetched user:
// $user .. or
Auth::user()->load(['comments' => function ($q) use ($postId) {
$q->where('post_id', $postId);
}]);
// then you can access comments for $postId just like this:
Auth::user()->comments; // collection
我有一个奇怪的问题。 我有一个用户表和一个公司表。一个用户属于一家公司,而一家公司有许多用户。 表的两个主键都是id。 在laravel文档中,我阅读了以下内容: 此外,Eloquent假设外键的值应该与父项的id列匹配。 我在我的
是否有一种方法可以将范围添加到BelongsTo很多字段,以便在附加相关模型时只能从受限选项中执行此操作? 例子: 发布物品到许多标签(使用Sploe/Laravel-Tags)。标签属性到许多帖子。 标签模型具有id、名称、段塞、类型和时间戳属性。 在细节或更新视图上,我希望能够将标签附加到Post。 使用Post资源上的默认BelongToMany字段(或第三方包),我可以向Post添加标记。
是否还要向findForPassport添加或传递1个变量? 在默认的laravel passport登录中,我只能传递2个变量(用户名、密码),但我想再传递1个变量,并在findForPassport中检查该用户是否属于其他表。
我目前正在研究构建SaaS构建管理工具。我想知道的是,如果我使用laravel passport作为api令牌,我如何为用户分配角色,例如: SuperAdmin:可以创建项目|可以创建新用户并为用户分配角色。 管理员:可以查看项目。 因为我希望能够根据用户权限隐藏前端上的元素。 例如,如果我使用传统的laravel应用程序,我可以使用委托和刀片指令@role('admin')来显示基于用户权限类
我正在尝试使用透视表实现多对多关系。我的透视表的名称是“post_-tag”,列名是“post_-id”和“tag_-id”。post和tag模型类如下所示。 标签类别如下所示: post_tag表如下: 我正在使用以下代码尝试帖子的标签: 但它抛出了一个错误: 查询连接中的异常。php第729行:SQLSTATE[42S22]:未找到列:1054个未知列的“posts”。where子句中的pos
是否可以在比1级更深的级别上进行具有雄辩能力的多级关系查询?我的桌子是这样的: post_comments- 发表评论或回复- 使用者- 用户数据- 所以我想问是不是有可能得到一个帖子的评论与所有的回复和用户数据的人谁回答了评论1查询与雄辩。 这就是我的评论模型的样子: 当我得到一条评论的所有用户数据时,我想得到回复者的所有用户数据。我真的很抱歉,如果这个问题已经在其他地方发布或记录,但我似乎无法