[英]How can I get unique records via query builder in Laravel?
我是 Laravel 的新手,谁能帮我解决这个问题,我应该如何在 laravel 查询生成器中通过此查询获取唯一记录?
截至目前,我得到了重复的记录,例如红色、粉色、红色、粉色、绿色
这是我的查询
MySQL查询:
select count(*) as aggregate from (select `product`.`id`, `name`, `category`.`category`, group_concat(product_synonyms.product_synonym)as product_synonym, group_concat(product_tags.product_tag) as product_tag from `product` left join `product_tags` on `product`.`id` = `product_tags`.`product_id` left join `category` on `category`.`id` = `product`.`category_id` left join `product_synonyms` on `product`.`id` = `product_synonyms`.`product_id` where `user_id` = 1 and `product`.`deleted_at` is null group by `product_tags`.`product_id`) as `aggregate_table`;
查询生成器:
Product::leftJoin('product_tags', 'product.id', 'product_tags.product_id')
->leftJoin('category', 'category.id', 'product.category_id')
->leftJoin('product_synonyms', 'product.id', 'product_synonyms.product_id')
->where('user_id', auth()->user()->id)
->select('product.id', 'name','category.category',DB::raw('group_concat(product_synonyms.product_synonym)as product_synonym'),DB::raw('group_concat(product_tags.product_tag)) as product_tag')
->groupBy('product_tags.product_id')
->orderBy('product.name', 'ASC')
->paginate(10);
我尝试了不同的加入并做了很多改变,似乎我错过了一些东西,我无法弄清楚,并以期待帮助而结束
要在查询中只获得一个结果,您需要使用:
$productDetails = Product::leftJoin('product_tags', 'product.id', 'product_tags.product_id')
->leftJoin('category', 'category.id', 'product.category_id')
->leftJoin('product_synonyms', 'product.id', 'product_synonyms.product_id')
->where('user_id', auth()->user()->id)
->select('product.id', 'name','category.category',DB::raw('group_concat(product_synonyms.product_synonym)as product_synonym')**->first();**
例如。
如果您需要更多查询结果,请分页。 如果您需要多个结果,请使用->get()
你可以试试这个
Product::leftJoin('product_tags', 'product.id', 'product_tags.product_id')
->leftJoin('category', 'category.id', 'product.category_id')
->leftJoin('product_synonyms', 'product.id', 'product_synonyms.product_id')
->where('user_id', auth()->user()->id)
->select('product.id', 'name','category.category',DB::raw('group_concat(product_synonyms.product_synonym)as product_synonym'),DB::raw('group_concat(product_tags.product_tag)) as product_tag')
->distinct()
->groupBy('product_tags.product_id')
->orderBy('product.name', 'ASC')
->paginate(10);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.