簡體   English   中英

如何通過 Laravel 中的查詢生成器獲取唯一記錄?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM