【问题标题】:Reach the subcategory from the Product model (Laravel)从产品模型(Laravel)到达子类别
【发布时间】:2019-10-04 19:53:47
【问题描述】:

我正在尝试从第一个具有雄辩关系的 laravel 模型到达最后一个模型。如何直接从 Product 访问子类别?

我拥有的 3 个模型:

产品(id、category_id 等)

    public function categories()
    {
        return $this->belongsTo('App\Category', 'category_id');
    }

类别(id、名称)

    public function products()
    {
        return $this->hasMany('App\Product', 'category_id');
    }

    public function sub_categories()
    {
        return $this->hasMany('App\SubCategory', 'category_id');
    }

子类别(id、category_id、名称)

    public function categories()
    {
        return $this->belongsTo('App\Category', 'category_id');
    }

我会假设我可以使用

Product::find(1)->categories->sub_categories;

我在这里遗漏了什么明显的东西吗?

【问题讨论】:

    标签: laravel eloquent relationship


    【解决方案1】:

    阅读此docs

    产品

    class Product extends Model
    {
        public function SubCategory()
        {
            return $this->hasManyThrough('App\Category', 'App\SubCategory');
        }
    }
    

    【讨论】:

      【解决方案2】:

      此外,在Product 模型上添加subCategories 方法,并且产品属于类别而不是类别 并且总是尝试使用骆驼大小写的方法(子类别)

      用这个替换你的代码

      产品:

      public function category()
      {
          return $this->belongsTo('App\Category', 'category_id');
      }
      
      public function subCategories()
      {
          return $this->category()->subCategories;
      }
      

      类别:

      public function products()
      {
          return $this->hasMany('App\Product', 'category_id');
      }
      
      public function subCategories()
      {
          return $this->hasMany('App\SubCategory', 'category_id');
      }
      

      子类别:

      public function categories()
      {
          return $this->belongsTo('App\Category', 'category_id');
      }
      

      最后用这个来获取子类别

      Product::find(1)->subCategories;
      

      【讨论】:

        【解决方案3】:

        Product::find(1)->categories 是一个array。您必须循环它以获取每个类别的子类别。见下文

        $categories = Product::find(1)->categories;
        foreach ($categories as $category {
        	//Get subcategories for each category
        	dump($category->sub_categories);
        }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-06-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多