Laravel связь таблицы соединения - PullRequest
1 голос
/ 05 августа 2020

Я хочу создать объединяющую таблицу, но я не уверен, как установить взаимосвязь в laravel.

У меня есть 3 таблицы, products, categories и product_categories. product_categories будет состоять из идентификатора продукта и идентификатора категории. Как мне присоединиться к тезисам в отношениях в laravel, чтобы я мог просто позвонить $product->categories() как нормальные отношения?

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Это отношение многие-ко-многим .

Вы можете использовать ownToMany как для products, так и categories, и это сработает. Однако вы также должны переименовать product_categories, чтобы следовать правилу

использовать имена таблиц в единственном числе в алфавитном порядке

это будет category_product

1 голос
/ 05 августа 2020

Ваши отношения будут ownToMany .

Ваша products таблица будет

id | name

Ваша categories таблица будет

id |  name

ваша product_categories таблица будет

id | product_id | category_id

Согласно соотношению в Laravel

Продукт Модель

class Product extends Model
{
    protected $table = 'products';
    
    public function categories()
    {
        return $this->belongsToMany('App\Category','product_categories','product_id','category_id');
    }
}

Категория Модель

class Category extends Model
{
    protected $table = 'categories';
   
    public function products()
    {
        return $this->belongsToMany('App\Product','product_categories','category_id','product_id');
    }
}

В контроллере сейчас

Product::with('categories')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...