Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在联接表中获得最低价格(laravel)_Php_Mysql_Laravel_Eloquent - Fatal编程技术网

Php 如何在联接表中获得最低价格(laravel)

Php 如何在联接表中获得最低价格(laravel),php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,这是我的密码: return self::join('item_tags','tags.id', '=','item_tags.tags_id') ->join('items','items.id', '=','item_tags.items_id') ->join('item_images','item_tags.items_id','=','item_images.items_id')

这是我的密码:

             return self::join('item_tags','tags.id', '=','item_tags.tags_id')
            ->join('items','items.id', '=','item_tags.items_id')
            ->join('item_images','item_tags.items_id','=','item_images.items_id')
            ->join('item_sellers','item_sellers.items_id','=','items.id')
            ->orderBy('item_sellers.price','asc')
            ->groupBy('item_sellers.items_id')
            ->paginate($paginate);
项目表

商品表

我的价格是1466.00而不是1400.00,有人能帮我解决这个问题吗?谢谢


PS:我需要为每个商品id获得最低价格。

这是由于
groupBy('item\u sellers.items\u id')
造成的。您需要添加
select
子句

return self::join('item_tags','tags.id', '=','item_tags.tags_id')
        ->join('items','items.id', '=','item_tags.items_id')
        ->join('item_images','item_tags.items_id','=','item_images.items_id')
        ->join('item_sellers','item_sellers.items_id','=','items.id') 
        ->select(DB:raw('field1, field2, min(price) as price'))
        ->groupBy('item_sellers.items_id')
        ->paginate($paginate);


我想你应该试试这个:

return self::select("item_sellers.id","item.name","item_sellers.price")
        ->join('item_tags','tags.id', '=','item_tags.tags_id')
        ->join('items','items.id', '=','item_tags.items_id')
        ->join('item_images','item_tags.items_id','=','item_images.items_id')
        ->join('item_sellers','item_sellers.items_id','=','items.id')
        ->orderBy("item_sellers.price",'ASC')
        ->orderBy("item_sellers.id",'ASC')
        ->paginate($paginate);

希望这对你有帮助

你也需要发布其他相关表格我不明白,为什么我需要选择?我需要获得每个商品的最低价格。您可以尝试通过重新排序
orderBy
groupBy
methode。我该怎么做?
groupBy('item\u sellers.items\u id')->orderBy('item\u sellers.price','asc')
是的,我获得每个商品的最低价格,但是在item\u seller表中的id,与我在这个查询中得到的不同,我应该得到商品卖家id 28,因为最低价格的id是28,但我得到的id是25。您必须指定您想要的id,而不是*在选择问题中,因为使用8时,结果中有多个id,所以您将始终从ResultHanks获得最后一个id列!但是我怎么做呢?你想要哪一个身份证?商品卖家的身份证,每件商品的价格都是最低的,我得不到任何回报。我将item_sellers.item_id更改为item_sellers.id没有更改,仍然没有任何回报。有一个输出,但仍然与之前一样。我得到了所有我不应该得到的物品,我只需要价格最低的物品和它们各自的id。我再次没有得到任何回报。
return self::select("item_sellers.item_id",\DB::raw("min(item_sellers.price) as min_selll_price"))join('item_tags','tags.id', '=','item_tags.tags_id')
        ->join('items','items.id', '=','item_tags.items_id')
        ->join('item_images','item_tags.items_id','=','item_images.items_id')
        ->join('item_sellers','item_sellers.items_id','=','items.id')
        ->orderByRaw("min(item_sellers.price)",'ASC')
        ->groupBy('item_sellers.items_id')
        ->paginate($paginate);
return self::select("item_sellers.id","item.name","item_sellers.price")
        ->join('item_tags','tags.id', '=','item_tags.tags_id')
        ->join('items','items.id', '=','item_tags.items_id')
        ->join('item_images','item_tags.items_id','=','item_images.items_id')
        ->join('item_sellers','item_sellers.items_id','=','items.id')
        ->orderBy("item_sellers.price",'ASC')
        ->orderBy("item_sellers.id",'ASC')
        ->paginate($paginate);