2016-06-25 4 views
0

У меня есть два стола, скажем, продукты и конкурсы, в которых один продукт может быть выставлен многими пользователями. Естественно, у меня есть две модели: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(); 

ответ

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

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

Это не то, что я имел в виду, когда я использую :: с «присоединиться» ставки и продукт Я хочу, чтобы получить т он предлагает цену, которая имеет самую высокую цену. – Lee

+0

Модели товаров и ставок между отношениями создают. Использование вызова модели, как указано выше. Вы должны использовать модельные отношения. Относитесь, см. Свою работу. –

0

Я бы извлечь наибольшую цену в отдельную функцию на модели продукта, например, так:.

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

Затем принести продукты и получить самую высокую цену:

$products = Product::get(); 

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

Я ищу один запрос на поиск, чтобы получить тот же результат, что и мой запрос Fluent. То, что я хочу достичь, похоже на это http://stackoverflow.com/questions/15291506/sql-query-to-select-distinct-row-with-minimum-value, но на Eloquent. – Lee

Смежные вопросы