Laravel Eloquent使用条件为

时间:2016-06-25 06:10:45

标签: php laravel eloquent

我有两个表,比如产品和出价,其中一个产品可以由许多用户出价。当然我有两种模式:

class Product extends Model
{
    public function biddings()
    {
        return $this->hasMany('App\Bidding');
    }
}

class Bidding extends Model
{
    public function product()
    {
        return $this->belongsTo('App\Product');
    }
}

所以,说我希望得到所有产品以及最高价的竞标,我做了类似的事情。

$productBidding = DB::table('biddings')
                 ->select('*', DB::raw('max(price) as price'))
                 ->join('products', 'products.id', '=', 'biddings.product_id')
                 ->groupBy('product_id')
                 ->get();

这很有效但我有点想以雄辩的方式做到这一点。那么如何将Query Builder转换为Eloquent呢?我现在正在这,但不知道如何把“最大”条件。

$productBidding = Products::with('biddings')
            ->get();

2 个答案:

答案 0 :(得分:0)

$productbinding=Bidding:with('product')
              ->get();

foreach($productbinding as $productbind) 
{
   echo $productbind->product->name;  // example
}

答案 1 :(得分:0)

我会将最高出价提取到Product模型的单独函数中,如下所示:

public function highestBid() {
    return $this->biddings()->max('price');
}

然后获取产品并获得最高出价:

$products = Product::get();

foreach ($products AS $product) {
    echo $product->highestBid();
}