我正在我的应用程序中开发过滤功能,并希望在union子句的结果上应用where子句,并且我尝试过这种方法,但是它不起作用。
$pricePerHour = VenueInfo::whereBetween("pricePerHour", [$values[0], $values[1] ]);
$pricePerDay = VenueInfo::whereBetween("pricePerDay", [$values[0], $values[1] ])->union($pricePerHour);
$result = DB::table(DB::raw("({$pricePerDay->toSql()}) as price"))
->mergeBindings($pricePerDay->getQuery())
->selectRaw("price.*")
->where('price.city' ,'Karachi');
我什么都没收到
dd($result->get());
当我获得$ result时,我必须对$ result应用过滤器,例如:
$venues = $result->when($spaceType, function($query, $spaceType){
$query->where('spaceType', $spaceType);
})
我也尝试过这种方式。
$pricePerHour = DB::table('venue_infos')->whereRaw(("pricePerHour between $values[0] and $values[1] "));
$pricePerDay = DB::table('venue_infos')->whereRaw(("pricePerDay between $values[0] and $values[1]"))->union($pricePerHour);
$result = DB::table(DB::raw("({$pricePerDay->toSql()}) as price"))
->mergeBindings($pricePerDay);
但是这里的问题是我何时做
dd($result->get()[0]->images);
它给我错误:
Undefined property: stdClass::$images
在这里场所信息表与图像表具有一对多的关系。
public function venueInfo(){
return $this->belongsTo('App\VenueInfo','d_id');
}
public function images(){
return $this->hasMany('App\Image', 'd_id', 'daftar_id');
}