Как показать цвета, связанные с продуктами, использующими laravel? - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь показать цвет продукта, связанный с продуктом. Я уже создал реляционные таблицы в базе данных. Я просто хочу знать, что при нажатии на указанный продукт c будет показан цвет, связанный с этим продуктом. Спасибо

У меня ошибка, как ее исправить? 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 Ответ

1 голос
/ 23 января 2020

Я бы настоятельно рекомендовал придерживаться верблюжьей оболочки, когда дело доходит до наименования ваших классов. Это действительно хорошее соглашение и помогает. поэтому в идеале 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 -в-много

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...