2017-06-18 47 views
0

如何使用Laravel(5.2)和雄辯實現以下等價的SQL查詢的MAX列...基礎上Laravel 5.2,口若懸河,加入表1至表2和錶帶上2

SELECT 
    products.id 
    ,products.name 
    ,MAX(bids.bid_price) as maximum_bid 
FROM products 
    INNER JOIN bids 
     ON products.id = bids.product_id 
GROUP BY products.id 

以下上下文:

我有一個拍賣系統,有用戶投標的產品。一個產品可以有很多出價,一個出價只能針對一個產品。

現在我想找回一個產品,其目前的最高出價

表:

產品

  • ID

投標

  • ID
  • bid_price
  • PRODUCT_ID

機型:

產品

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Product extends Model 
{ 
    /** 
    * A Product has many bids 
    * 
    * @return \Illuminate\Database\Eloquent\Relations\BelongsTo 
    */ 
    public function bids() 
    { 
     return $this->hasMany('App\Bid'); 
    } 
} 

投標

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Bid extends Model 
{ 
    /** 
    * A Bid belongs to a product 
    * 
    * @return \Illuminate\Database\Eloquent\Relations\BelongsTo 
    */ 
    public function product() 
    { 
     return $this->belongsTo('App\Product','product_id'); 
    } 
} 

回答

0

這個工作用雄辯。

Product::join('bids', 'products.id', '=', 'bids.product.id') 
    ->select(['products.id', 'products.name', DB:raw('MAX(bids.bid_price) as maximum_bid')]) 
    ->groupBy('products.id') 
    ->where('products.id', '=', 123) 
    ->get(); 
1

試試這個:

DB::table('products') 
    ->select(['products.id', 'products.name', DB:raw('MAX(bids.bid_price) as maximum_bid')]) 
    ->join('bids', 'products.id', '=', 'bids.product.id') 
    ->groupBy('products.id') 
    ->get(); 

扔在where子句中特定產品:

DB::table('products') 
    ->select(['products.id', 'products.name', DB:raw('MAX(bids.bid_price) as maximum_bid')]) 
    ->join('bids', 'products.id', '=', 'bids.product.id') 
    ->groupBy('products.id') 
    ->where('products.id, '=', 123) 
    ->get(); 
+0

謝謝,@btl。將它作爲查詢生成器的方法記住它,但它可能使用雄辯嗎? – user919426