如何使用laravel显示与产品相关的颜色?

时间:2020-01-23 09:44:09

标签: laravel

我试图显示与产品相关的产品颜色,我已经在数据库中建立了一个关联表,我只想知道当我单击特定产品时,将显示与该产品相关的颜色。谢谢

我面临错误该如何解决? https://flareapp.io/share/VmeXLq5Q#F56

有人有主意吗?

product_color模型

          class Product_color extends Model
          {
          public function products()
          {
          return $this->belongsToMany('App\Product', 'available_product_color', 'product_color_id', 
         'product_id');
          }
          }

产品型号

           class Product extends Model
           {
           public function sizes()
           {
           return $this->belongsToMany('App\Product_sizes', 'available_product_sizes', 'product_id', 
          'product_size_id');
            }

         public function color()
         {
         return $this->belongsToMany('App\Product_color', 'available_product_color', 'product_id', 
        'product_color_id');
         }

         }

控制器

       public function single_product($product_slug)
       {       
      $single_product = Product::with('sizes','color')->where('product_slug',$product_slug)->first();      
      return view('front_end/single_product',compact('single_product'));
       }   
       }

HTML观看

                <div class="form-group product__option">
                <label class="product__option-label">Color</label>
                <div class="input-radio-color">
                <div class="input-radio-color__list">
                @foreach($single_product->color as $color)   
                <span><img src="{{$color->color_image}}"></span>
                @endforeach                                                    
                </div>
                </div>
                </div>

1 个答案:

答案 0 :(得分:1)

在为您的班级命名时,我强烈建议您坚持使用驼峰式外套。这是一个非常好的约定,对您有所帮助。因此理想情况下,Product_color应该为ProductColor或至少为Product_Color。这也有助于laravel轻松找到相关信息。根据laravel约定,您的数据透视表应按字母顺序命名,因此字母C位于P之前,因此应命名为ColorProduct,否则请在模型中指定表的名称

class Product_color extends Model
{
  protected $table = 'available_product_color ??';

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

这是文档的链接。 https://laravel.com/docs/6.x/eloquent-relationships#many-to-many