我有两个表,比如产品和出价,其中一个产品可以由许多用户出价。当然我有两种模式:
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();
答案 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();
}