Я пытаюсь выяснить что-то в Laravel.
У меня есть модель «Телефон» и метод countproducts ().
Каждая модель «Телефон» имеет много «Продуктов».
Я использую countproducts () для подсчета продуктов, которые есть у телефона.
$phones=Phone::where(function($query){
if(isset($min_weight) && isset($max_weight)){
$query-> where('weight','>=',$min_weight);
$query-> where('weight','<=',$max_weight);
}
Вот как я сейчас опрашиваю телефоны.
Можно ли запрашивать и показывать только телефоны с, скажем, более 50 продуктами?
заранее спасибо
РЕДАКТИРОВАТЬ: Phone.php
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Phone extends Model {
public function productnum()
{
return $this->hasMany('App\Product');
}
public function productStore()
{
return $this->hasOne('App\Store');
}
public function category(){
return $this->belongsTo('App\Category');
}
public function minprice(){
return $this->productnum->min('newprice');
}
public function maxprice(){return $this->productnum->max('newprice');
}
}
product.php
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model {
public function manufacturer(){
return $this->hasOne('manufacturer');
}
public function phone(){
return $this->belongsto('App\Phone');
}
public function category(){
return $this->belongsto('App\Category');
}
public function store(){
return $this->belongsto('App\Store');
}
Прямо из документы.
$phones = Phone::has('products', '>=', 50)->get();
Вы должны быть в состоянии поставить перед get()
ваш where()
статьи.
Других решений пока нет …