当前位置: 首页 > 知识库问答 >
问题:

Laravel 4(.1),有口才和人际关系

钱宇
2023-03-14

我有一个帖子模型、一个用户模型和一个评论模型。

我的用户可以发布帖子,也可以评论帖子。

我想得到帖子的评论,但是,我的用户也可以阻止用户。

我的意思是,如果活动用户有一些其他被阻止的用户,并且如果post的评论有这些用户创建的评论,我必须排除他们。

问题来了。

$posts = $user()->posts()->get();

$blockedUserIdentifiers = (array) $viewer->getBlockedUserIdentifiers();

$posts->with(array('comments' => function($query) use ($blockedUserIdentifiers)
{
    if( ! empty($blockedUserIdentifiers))
        $query->whereNotIn('user_id', $blockedUserIdentifiers);
}))->with('user'); // ? Ups?

我想使用帖子和评论的关系,因为这里的工作还没有完成。但是如果我在posts数组中使用foreach,那么继续使用foreach将非常奇怪;如果我在posts对象上使用foreach,我很难继续。

因为我有阻塞的情况,我不能急于加载太多。

什么是我的情况下的最佳实践,或者,我应该如何添加$注释结果对象到$post对象像laravel一样?

或者我如何继续向该结果添加关系结果?

共有1个答案

雍俊远
2023-03-14

使用with()对多个关系进行约束。

$posts->with(array('comments' => function($query) use ($blockedUserIdentifiers)
{
    // if( ! empty($blockedUserIdentifiers))
    //     $query->whereNotIn('user_id', $blockedUserIdentifiers);
}, 'comments.user', function($query) use ($blockedUserIdentifiers)
{
    // Constraints on the users can go here
    if( ! empty($blockedUserIdentifiers))
        $query->whereNotIn('id', $blockedUserIdentifiers);
}))->get();

或者在回声的时候做。

foreach($posts as $post) {
    // If you want to keep your relationships clean, you can just not echo the post instead
    if(array_search($post->user_id, $blockedUserIdentifiers) !== false) {
        continue;
    }

    echo $post->content;
    foreach($post->comments as $comment) {
        echo $comment->user;
        echo $comment->content;
    }
}
 类似资料:
  • 我有users表,它与vendordetails表有hasOne关系。 vendordetails表包含country_id、state_id和city_id,与Country、State和City模型有归属关系。 vendorDetail.php模型为:- 如果我查询users表,如何获取国家、州和城市的记录。 在这个查询中,它只找到vendordetails表的结果,我还想要country、s

  • 有以下表格结构: 使用者 有很多页 页 属于用户 有许多笔记 笔记 属于用户 为了创造一个音符,我做了: 容易。由于大规模赋值漏洞,我希望避免在注释模型的可填充内部具有外键。代码更改为: 模糊的为了实现这一点,我必须在迁移中使note的user_id为null。这感觉是错误的,因为如果没有用户,便笺就不应该存在。你将如何解决这个问题?

  • 问题内容: 我正在寻找可以从nodejs访问的git的实现-这样的野兽存在吗? 问题答案: 看起来现在有一些使用git from node的选项: 礼物:用于Git CLI的简单Node.js包装器,带有基于Grit的API(npm / github) node-git:基于grit(npm / github)的node.js git实现 nodegit:libgit2异步本机绑定(npm / g

  • Laravel 4中的RESTful和资源控制器受到限制,即RESTful方法名称必须以get、put、post、patch、delete结尾,而资源控制器必须以index、create、store、show edit、update和destroy结尾。我的问题是,Laravel 5是否也施加了同样的限制?

  • 我的Debian 9服务器上正在通过docker compose运行一个合流的Kafka实例。我按照本教程进行了设置并运行。然而,控制中心正在定期关闭。 给出以下输出: 其余的融合服务保持正常运行。 当检查docker日志()时,我可以看到它正在发送以下错误: 编辑:发现了更多日志: 编辑2:docker容器可用的内存: 系统内存(命令:): 有什么办法解决这个问题吗?

  • 我想执行每个产品的平均评级,存储在数据透视表中称为“评论”。下面是我现有的代码。 产品型号: 用户模型: 审查的迁移 我试图使用下面的代码构造预期的输出,但它导致了N+1个问题,因为它没有利用Laravel口才的急切加载。 预期产出: