User : id,name,age
Shop : id,user_id,name
Address : id, shop_id, address
Shop Type : id, shop_id, type
А [пользователь] имеет мульти [магазин], и [магазин] имеет мульти ветви, поэтому она имеет мульти [адрес], и [магазин] также имеет мульти [типа ], такие как алкоголь, еда, закуски, напитки и многое другое.Laravel 5 фильтров основных данные с отношением
Теперь я хочу получить магазин пользователя со всем адресом и типом магазина. Ниже приведены мои модели:
модель пользователя
public function shop(){
return $this->hasMany('App\Shop');
}
Магазин Класс
public function address(){
return $this->hasMany('App\Address');
}
public function type(){
return $this->hasMany('App\ShopType');
}
Адрес Класс
public function state(){
return $this->hasMany('App\State');
}
public function city(){
return $this->hasMany('App\City');
}
public function country(){
return $this->hasMany('App\Country');
}
Мой контроль
public function shop($id)
{
$shop = User::where("id",$id)->with('shop.address','shop.type')->first();
if($shop){
return response()->json(
[
'shop' => $shop->shop,
],
200,
array(),
JSON_PRETTY_PRINT
);
}else{
return false;
}
Код выше можно получить адрес все магазина и тип магазина в базе данных, , но как я могу сделать фильтр только типа магазина = «пища» и «напиток» и код страны нас с программированием? я стараюсь код ниже, но не работает для меня:
$type = {'food','drink'}; // Example
$user = {'1'}; // Example
public function shopWithFilter($id,$type,$country)
{
$shop = User::where("id",$id)->with('shop.address','shop.type')->where(['shop.type.name'=>$type,'shop.address.country.code',$country])->first();
if($shop){
return response()->json(
[
'shop' => $shop->shop,
],
200,
array(),
JSON_PRETTY_PRINT
);
}else{
return false;
}
Благодарности