Полиморфный много-много категорий с вложенными дочерними - PullRequest
1 голос
/ 10 апреля 2019

Я пытался выяснить, как получить полиморфные категории «многие ко многим» с вложенным связанным потомком для загрузки. Например. продукты с категориями и дочерними категориями, для которых в сводной таблице указан тот же идентификатор категории в таблице, что и идентификатор продукта.

Это то, что я имею до сих пор, работает соотношение категорий, как и дети, только когда я пытаюсь сделать это с продуктом, которого нет:

class Product extends Model
{
    public function categories(): MorphToMany
    {
        return $this->morphToMany(Category::class, 'categorizable')->withTimestamps();
    }
}

Категория модели:

class Category extends Model
{
    public function products(): MorphToMany
    {
        return $this->morphedByMany(Product::class, 'categorizable');
    }

    public function children(): HasMany
    {
        return $this->hasMany(Category::class, 'parent_id', 'id');
    }
}

Миграция:

Schema::create('categories', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('type');
    $table->string('context');
    $table->integer('parent_id')->nullable();
    $table->timestamps();
    $table->softDeletes();
});

Schema::create('categorizables', function (Blueprint $table) {
    $table->increments('id');
    $table->integer('category_id')->unsigned();
    $table->morphs('categorizable');
    $table->timestamps();
});

Я пробую все виды, но не могу понять, например .:

$product->categories()->with(['children' => function($q) use ($product) {
    return $q->where(categorizable_id, $product->id);
}])->get();

$product->categories()->with(['children' => function($q) use ($product) {
    return $q->wherePivot('categorizable.categorizable_id', $product->id);
}])->get();

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

Любая помощь будет потрясающей!

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