gpt4 book ai didi

php - 如何在关系查询中使用 Laravel 5 中的 hasRole() 过滤用户?

转载 作者:行者123 更新时间:2023-11-29 02:12:12 24 4
gpt4 key购买 nike

我想过滤我的查询并仅在用户具有角色“Premium”时返回并将结果限制为 10。

与此查询一起的是 Conversion 拥有的记录计数,并按总列的 DESC 顺序对其进行排序。

现在我有一个工作查询,它​​返回转换计数和一个用户但没有用户过滤器角色。

// Model Conversion belongs to User
// $from & $end uses Carbon::createDate()
// Current code
$query = Conversion::select('user_id',DB::raw('COUNT(*) as total'))
->whereBetween('created_at', [$from,$end])
->where('type','code')
->where('action','generate')
->whereNotNull('parent_id')
->with('user')
->groupBy('user_id')
->orderBy('total', 'DESC')
->take(10)
->get();

// current result
foreach ($query as $q) {
$q->user->name; // To access user's name
$q->total; // To access total count
}

// I tried this but no luck
$query = Conversion::select('user_id',DB::raw('COUNT(*) as total'))
->whereBetween('created_at', [$from,$end])
->where('type','code')
->where('action','generate')
->whereNotNull('parent_id')
->with('user', function($q) {
$q->hasRole('Premium');
})
->groupBy('user_id')
->orderBy('total', 'DESC')
->take(10)
->get();

最佳答案

你需要使用whereHas而不是with,像这样:

 ->whereHas('user', function ($query) {
$query->where('role','Premium');
})

关于php - 如何在关系查询中使用 Laravel 5 中的 hasRole() 过滤用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48821604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com