2016-06-26 2 views
0

Я хотел бы задать вопрос о User, Cart и Product красноречивых отношениях. User hasOne Cart и Cart могут иметь много Product.Пользователь, Корзина и продукты Яркие отношения

class User { 

    public function cart() 
    { 
     return $this->hasOne(App\Cart::class); 
    } 
} 



class Cart { 

    public function user() 
    { 
     return $this->belongsTo(App\User::class); 
    } 

    public function products() 
    { 
     return $this->hasMany(App\Product::class); 
    } 
} 



class Product { 

    // 
} 

Я таблицы базы данных структурированы как:

users

- id 
- email 
- username 
- password 

carts

- id 
- user_id 
- product_id 
- quantity 

products

- id 
- name 
- price 

Это правильно?

ответ

0

Нет, это неправильно.

users таблица верна, но для carts таблицы вы не должны иметь product_id колонку, потому что это один-ко-многим (тележка может иметь несколько продуктов), так что ваша carts таблица должна выглядеть следующим образом:

  • идентификатор
  • user_id
  • количество

Но, глядя дальше, вероятно, вы не тусклый t от одного до многих отношений между тележкой и продуктом, потому что, вероятно, продукты являются общими для всех пользователей, поэтому вам нужно много отношений.

Таким образом, вы должны определить одну дополнительную таблицу (сводная таблица):

cart_product

- cart_id 
- product_id 

и вы должны изменить products отношений в Cart модели как так:

public function products() 
{ 
    return $this->belongsToMany(\App\Product::class); 
} 

Вы должны, очевидно, создайте такую ​​же обратную связь для своей модели Product, если она вам понадобится.

+0

Спасибо @Marcin –

+0

@TakeOver Нет проблем, если это поможет, вы должны отметить мой ответ как принятый –

Смежные вопросы