我正在尝试查询我的 Laravel 模型。我需要属于 id = 1 的父类别的子类别中的所有产品,并且我还需要属于该产品的评论。我怎样才能得到它?我尝试按类别模型:
public function scopeForProduct($query, $id)
{
$query->where('parent_id', $id)->join('products', 'products.category_id', '=', 'categories.id');
}
public function scopeWithProductPhoto($query)
{
$query->select('products.*');
}
我的数据库:看起来像:
Categories:
id | parent_id | name | desc
1 0 App -
2 1 BBQ subcat of app
Products:
id | category_id | name | description | photo | partner_link
1 2 Item
Reviews:
id | user_id | product_id | description | rating
1 3 1 - 5
我需要从属于父类别的子类别中获取带有评论的所有产品(例如,parent_id = 1)。
但是这不起作用。
最佳答案
您可以为此使用 Eloquent 关系: http://laravel.com/docs/eloquent#relationships
产品型号:
public function reviews()
{
return $this->hasMany('Review');
}
public function category()
{
return $this->belongsTo('Category');
}
类别模型:
public function products()
{
return $this->hasMany('Product');
}
审查模型:
public function product()
{
return $this->belongsTo('Product');
}
查询:
$parent_id = 1;
$category = Category::with('products.reviews')
whereHas('products', function($q)
{
$q->has('reviews');
})
->where('parent_id','=',$parent_id);
->get();
这仅选择parent_id为1的类别。并且仅当它包含带有评论的产品时才选择。如果没有带有评论的产品,它将返回一个空数组。
关于php - Laravel 如何从 3 个表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24887216/