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

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;
    }
}
 类似资料:
  • 🕒 岗位/面试时间 美团前端一面/4.24晚 第一次面试,几乎没有准备,被狠狠拷打了

  • 我可能还真面试不过

  • 我有users表,它与vendordetails表有hasOne关系。 vendordetails表包含country_id、state_id和city_id,与Country、State和City模型有归属关系。 vendorDetail.php模型为:- 如果我查询users表,如何获取国家、州和城市的记录。 在这个查询中,它只找到vendordetails表的结果,我还想要country、s

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

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

  • 问题内容: 我正在寻找可以从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