【问题标题】:Laravel eloquent use whereNotIn and Take in relationship dataLaravel eloquent 使用 whereNotIn 和 Take in 关系数据
【发布时间】:2021-06-14 19:00:38
【问题描述】:

这是我的代码:

$course = Course::where('id', $activeCourseId)
        ->with(["blocks.cards" => function($q) use($cardsDueIds) {
            $q->whereNotIn('id', $cardsDueIds);
            $q->take(50);
        },
        "blocks.cards.contexts",
        "blocks.cards.user_contexts",
        "blocks.cards.block.course",
        "blocks.cards.thisUser"])
        ->first();

课程资料如下:

{
  blocks: [
    0: {
      cards: [
       0: {id: 298736},
       1: {id: 293747}
      ]
    }
    1: {
      cards: [
       0: {id: 1234445}
      ]
    }
  ]
}

我尝试获取只有 50 个blocks.cards 的课程,其中blocks.cards.id 不在$cardsDueIds 中。

实际上它不起作用,take(50) 我得到 0 张卡片,而没有 take(50) 我得到所有卡片(但 whereNotIn 不起作用)...

有人知道怎么做吗?谢谢!

【问题讨论】:

  • 你能打印 $cardsDueIds 是不是这个数组吗?

标签: laravel eloquent relation


【解决方案1】:

请重新提出您的问题(您说的两次相同):

实际上它不起作用,用 take(50) 我得到 0 张牌,用 take(50) 我得到所有牌......

【讨论】:

    【解决方案2】:
    $q->whereNotIn('id', $cardsDueIds)->take(50);
    

    如果不起作用,请参阅此thread

    【讨论】:

    • 感谢您的回答,抱歉,您的解决方案中卡片为空
    • 试试limit 而不是take
    • 对不起,与 ->limit(50) 的结果相同
    猜你喜欢
    • 1970-01-01
    • 2017-07-12
    • 2016-05-25
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2021-07-17
    相关资源
    最近更新 更多