3
を持つ私はproduct.rating
(int)を持っているproduct
テーブルに関連store
表、1私は私のポストデータに基づいて平均の製品評価の3つ星またはいずれかを持っている店を見つけたい Laravel雄弁関係AVGは
私のコード
$store = new Store;
if ((int)$request->input('store-rating')>0) {
$store->whereHas('product',function($query) use($request) {
$rate = $request->input('product-rating');
$query->where(DB::raw('AVG(rating)'),$rate);
});
}
$store->with('product');
$thestore = $store->paginate(6);
return $thestore;
その常に私のPOSTを無視store-rating
値のようなすべてのデータを返す
は、ここに私のモデル
<?php
namespace App;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as AuthUser;
use Illuminate\Support\Facades\Auth;
use App\ModelBuilder;
class Store extends AuthUser
{
use SoftDeletes;
protected $guarded = [];
protected $dates = ['deleted_at'];
public function product(){
return $this->hasMany('App\Product');
}
}
ソリューションです私は、クエリを動作させるためにgroupBy
とhavingRaw
を使用する必要があります下に答えたが、それはそれはの私の唯一の問題ではありませんが判明するよう
コード
私は、コードを変更:
$store = Store::with('session');
if ((int)$request->input('store-rating')>0) {
$store->whereHas('product',function($query) use($request) {
$rate = $request->input('product-rating');
$query->groupBy('rating')->havingRaw('AVG(rating) = '.$rate);
});
}
$thestore = $store->paginate(6);
return $thestore;
の
その、私は私のモデルクエリー、これは他の人を助けることができる
希望を開始するために$store = new Store;
を使用することはできませんように見えます。