Как получить вложенные категории по имени родительской категории?

Есть такая таблица категорий:

    Schema::create('categories', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('alias')->nullable();
        $table->unsignedBigInteger('parent_id')->nullable();
        $table->string('description')->nullable();
        $table->boolean('status')->default(true);
        $table->timestamps();

        $table->foreign('parent_id')->references('id')->on('categories')
            ->onDelete('cascade')
            ->onUpdate('cascade');
    });

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

    SELECT * FROM categories c1
    where exists(
                select * from categories c2
        where c1.parent_id=c2.id
            and c2.name='Category1'
    )

должно быть примерно как-то так:

use App\Models\Category;

    $categories = Category::whereHas('parent_id',function($query){
        $query->whereIn('name', 'Category1');
    })->get();  

пытался сделать так:

class Category extends Model {
    public function parent() {
        return $this->belongsTo('Category','parent_id','id');
    }
}
//controller
$categories = Category::whereHas('parent',function($query){
    $query->whereIn('name', 'Category1');
})->get();  

но выдаёт ошибку: Class 'Category' not found
хотя эта команда возвращает все категории без ошибок:

 $categories = Category::get();

Подскажите, как это правильно сделать?


Ответы (0 шт):