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

orderBy在多对多关系上创建了_-at-laravel和雄辩的

贺君浩
2023-03-14

我想知道如何在透视表created_at上使用orderby。

目前我有这个:

  • 用户
  • 活动
  • 订阅[用户id、事件id、创建时间、更新时间]

我想让所有用户订阅特定的事件ID:

return $this->user
    ->with('subscriptions')
    ->whereHas('subscriptions', function ($query) use ($eventId) {
        $query->where('events.id', $eventId)
              ->orderBy('subscriptions.created_at', 'ASC');
    })
    ->paginate(5);

我将所有用户附加到特定事件上,但orderBy不起作用。我想使用的方式有没有连接方法。

共有3个答案

轩辕远
2023-03-14

with()使用即时加载,将查询转换为多个查询。你可以试试这个。

return $this->user->join('subscriptions', function ($join) use ($eventId) {
                $join->on('subscriptions.user_id', '=', 'users.id');
                $join->where('events.id', $eventId)
            })
            ->select('users.*', 'subscriptions.*')
            ->orderBy('subscriptions.created_at', 'ASC')
            ->paginate(25);
晏正豪
2023-03-14

以下是另一种获得您想要的东西的方法:

  • 加入()
        return $this->user
            ->with('subscriptions')
            ->has('subscriptions')
            ->join('subscriptions', function ($join) use ($request) {
                $join->on('subscriptions.user_id', '=', 'users.id');
            })
            ->select('users.*', 'subscriptions.created_at as subscriptions_created_at')
            ->orderBy('subscriptions_created_at', 'ASC')
            ->paginate(5);
龙越彬
2023-03-14

我认为你应该在with从句上点菜,像这样:

return $this->user
    ->with([
        'subscriptions' => function ($query) {
            $query->orderBy('created_at', 'ASC');
        }
    ])
    ->whereHas('subscriptions', function ($query) use ($eventId) {
        $query->where('events.id', $eventId);
    })
    ->paginate(5);
 类似资料:
  • 我刚刚开始学习LaravelV3,我试图通过创建一个博客来了解eloquent的一对多关系。我的帖子与类别有多对一的关系(每个帖子都链接到一个类别)。 我有以下表格和以下字段: 帖子:id、标题、正文、创建日期、类别id 类别:id、名称 我有以下两种型号: 我想出了如何通过传递类别id来获得所有帖子: 我只是需要帮助,找出如何获得所有的职位,并得到他们的更正类别。因此,在视图中的一天结束时,我可

  • 我有帖子表和评论表。我想得到所有的帖子与它的评论和以下返回只是帖子有评论: 更新 例如 ID帖 1个职位1 2后2 id post\u id评论 1萨姆勒大学评论 Post::with('comments')只返回有注释的帖子,它只返回第一篇帖子,因为第二篇帖子没有注释,我想获取所有帖子(有注释或没有注释)

  • 我正在使用Laravel 5创建一个博客,但我对多对多(通过透视表)关系有一个奇怪的问题。我的DB设置如下: 文章表: id|bigint|20|PK|不为空|自动增量 title|varchar|255|不为空 body|text|不为空 category_id|bigint|20|不为空 created_at|时间戳|不空 updated_at|时间戳|非空 已发布|布尔值|非空 delete

  • 我使用的是Laravel 5.4,其模型和表格结构如下: 一个用户可以有多个账户 一个帐号可以被多个用户共享 每个账户有多个持有量 因此,用户通过他们的许多帐户间接拥有许多资产。 我需要帮助在用户模型上定义一个称为“持有量”的关系,以获得适用于用户的所有持有量(基于他们所链接的账户)。 我尝试了很多不同的东西,在谷歌上花了很长时间。我可以接近BelongToMany和hasManyThrough,

  • 在我的应用程序中,我更新了从一对多到多对多的关系,我试图找出一种持久化关联功能的方法。 假设我有两个相关的表,例如狗和主人。如果我有一系列的主人,并且我正试图为这些主人获取一份狗的id列表,我应该如何雄辩地做到这一点? 这里也提出了类似的问题:https://laracasts.com/discuss/channels/laravel/getting-many-to-many-related-da

  • 请查看下面的代码。 我在“CompletedService”中有多条记录,并且在account表中有一个父id account\u id。我和你约会是为了钱。 ASC和DESC已经尝试过了。 尝试按whereHas排序,但不会影响任何记录。下面是模型关系。 我不需要在模型中使用orderby,因为我多次使用了这个关系,并且在这个查询中只需要orderby。 与一个已完成的服务记录关系只有一个账户。