【问题标题】:Querying Laravel Eloquent Relationship查询 Laravel Eloquent 关系
【发布时间】:2017-07-19 18:10:12
【问题描述】:

我有三张桌子。

  • 分类
  • 产品
  • 品牌

我的类别表与产品有如下关系:

public function products()
{
    return $this->belongsToMany('App\Product','product_sub_categories','subcategory_id','product_id');
}

我的 Products 表与品牌有如下关系:

public function manuf()
    {
        return $this->belongsTo('App\Brand','brand');
    }

我正在查询类别表以返回某个品牌的该类别的产品。

例如。

我想查看带有菲亚特品牌的汽车类别中的所有产品。

我已经尝试了以下方法,但我觉得我错过了一些东西..

 $search = 'fiat';
 $products = $category->products()->where(function($query) use ($search){
                    $query->brand->name = $search;
                })->get();

【问题讨论】:

    标签: php mysql laravel laravel-5 eloquent


    【解决方案1】:

    按某个品牌退回该类别的产品

    我假设您知道品牌 ID 和类别 ID,并且产品和类别具有多对多关系(因为您使用的是 belongsToMany)并且产品属于品牌:

    Product::where('brand_id', $brandId)
           ->whereHas('categories', function($q) use(categoryId) {
               $q->where('id', $categoryId);
           })
           ->get();
    

    【讨论】:

    • 我遇到的问题是我的产品与许多类别相关,并由 products_categories 关联表定义 - 它仍然有效吗?
    • @Dev.Wol 是的,如果两个关系都被正确定义,它将起作用。
    猜你喜欢
    • 2013-10-03
    • 2021-09-25
    • 2015-01-21
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 2015-12-22
    相关资源
    最近更新 更多