如何使用 Count in where has Condition by laravel eloquent

Mah*_*ndi 3 php mysql laravel eloquent

我有两张桌子:

客户表 =


id,
score,
total_buy,
(该表有很多交易)

还有交易表


customer_id,
value,
score,
created_at,
(该表属于客户)

我想搜索有 5 笔交易的客户,其中一笔交易是在 2017 年 1 月 1 日创建的,并且客户得分和价值超过 200 并按随机顺序取 10 行(它是一个彩票系统)我在询问之前尝试此代码

customer::
      whereHas('transactions', function ($query) use ($last_transaction)
      {
        $query->whereDate('created_at',$last_transaction);
      })
      ->where('total_buy', '>=',$r->minvalue)
      ->where('score', '>=',$r->score)
      ->inRandomOrder()
      ->take($r->customernumber)
      ->get();
Run Code Online (Sandbox Code Playgroud)

但我不知道如何计算哪里的行子关系

Soh*_*415 5

使用havingRaw()

customer::
  whereHas('transactions', function ($query) use ($last_transaction)
  {
    $query->havingRaw('COUNT(*) > 4');
  })->
  whereHas('transactions', function ($query) use ($last_transaction)
  {
    $query->whereDate('created_at',$last_transaction);
  })
  ->where('total_buy', '>=',$r->minvalue)
  ->where('score', '>=',$r->score)
  ->inRandomOrder()
  ->take($r->customernumber)
  ->get();
Run Code Online (Sandbox Code Playgroud)

这将检查至少 5 transactions。如果需要exact5 个,则使用equal运算符。