php - Quiere buscar datos de tres tablas en laravel 5.2
database eloquent (1)
Creo que puedes usar el método with()
:
Modelo de producto: agregue el siguiente método
public function subcategory($category_id){
return $this->belongsTo(''App/Subcategory'', ''subcategory_id'')->with(`category`)->where(''category_id'',$category_id);
}
Ahora en Controller, puede verificar si el producto pertenece a esa categoría,
$products = $products->subcategory($category_id);
Esto también te dará datos de categoría.
Tengo una pequeña consulta en la que necesito su ayuda. Consulte a continuación.
Quiero buscar todos los datos de la tabla de productos con algunas condiciones, como ciudad, precio, tipo, categoría. Puedo buscar todos los datos pero no puedo obtener los datos de categoría del modelo del producto con todas las demás condiciones.
A continuación están mis tablas y las relaciones Eloquent. Estoy usando Laravel 5.2.
products ->foreign_key(''subcategory_id'')
subcategories ->foreign_key(''category_id'')
category
users: ->foreign_key(''product_id'')
users table columns: ->city, price, product_id
Relaciones:
User Model:
public function product(){
return $this->hasMany(''App/Product'');
}
Product Model:
public function subcategory(){
return $this->belongsTo(''App/Subcategory'', ''subcategory_id'');
}
Subcategory Model:
public function product(){
return $this->hasMany(''App/Product'', ''subcategory_id'');
}
public function category(){
return $this->belongsTo(''App/Category'');
}
Category Model:
public function subCategory(){
return $this->hasMany(''App/Subcategory'');
}
public function product(){
return $this->hasManyThrough(''App/Product'', ''App/Subcategory'');
}
Aquí está mi consulta (en ProductsController.php).
$city_id, $category_id, $min_price, $max_price : demo data passed
//fetching city data
$products = Product::whereHas(''user'', function($query) use($city_id) {
$query->where(''city_id'', $city_id);
});
//fetching category data (I am not sure about this part)
$products = $products->whereHas(''category'', function($query) use($category_id) {
$query->where(''id'', $category_id);
});
//fetching price data
$products = $products->where(''price'', ''>='', $min_price)->where(''price'', ''<='', $max_price);
//sub category filtering
$products = $products->where(''subcategory_id'', 1);
$products = $products->get()->toArray();
return $products;
Cualquier ayuda sería apreciada. Gracias por adelantado.