связанные записи родительской таблицы в отношении многих ко многим в laravel - PullRequest
0 голосов
/ 23 февраля 2019

Таблица 1: categories: id,name,parent_id

id   name        parent_id
1    Vehicle     null
2    Car         1
3    Sedan       2

Vehicle > Car > Sedan

Таблица 2: features: id, name

id   name 
1    type
2    cylinder
3    color
4    weight

Таблица 3: category_feature: category_id, feature_id

category_id  feature_id
1            1
1            2
2            3
3            4

Я могполучить все функции по родителю (категории).

, например, с этим:

Модель категории:

public function features()
{
    return $this->belongsToMany(Feature::class);
}

И:

$category = Category::find(1);
$features = $category->features()->get(); 

Какмогу ли я получить по детской категории все особенности ребенка и особенности отцовских категорий?

что-то вроде этого:

$category = Category::find(3);
$features = $category->parent_features()->get();

Я хочу, чтобы они возвращали эти: тип, цилиндр,цвет, вес

1 Ответ

0 голосов
/ 23 февраля 2019

Вкл. Категории Модель:

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

Затем вы можете загрузить его за один раз:

$category = Category::with(['features', 'parent' => function($query){
     $query->with('features');
}])->find(3);

И затем вы можете использовать родительские функции:

$features = $category->parent->features;

Или оригинальные характеристики автомобиля:

$originalFeatures = $category->features;
...