Ну, у меня есть эта таблица в моей базе данных:Laravel Самостоятельное отношений
CREATE TABLE categories(
id INT,
name VARCHAR,
id_parent INT,
CONSTRAINT fk_categories FOREIGN KEY(id_parent) REFERENCES categories(id)
);
В Laravel Категория модели, у меня есть это:
class Category extends Eloquent
{
protected $table = "categories";
public function parentCategory(){
return $this->belongsTo("Category","id_parent");
}
public function subCategories(){
return $this->hasMany("Category","id_parent");
}
}
Также у меня есть эти данные:
id name id_parent
1 category_1 NULL
2 category_2 NULL
3 category_3 1
4 category_4 1
5 category_5 2
Когда я звоню в контроллер:
count(Category::with("subCategories")->get()); The count returns 5.
И когда я звоню в контроллере:
count(Category::has("subCategories")->get()); The count returns 0.
Все это плохо, потому что я хочу только те категории, которые parent_id = NULL, то будет возвращать к графе 3.
Если я использую count(Category::where("id_parent","!=","NULL")
результат равен 3 (это нормально), но я хочу получить этот результат с помощью функции HAS или WITH.
Итак, как я могу это сделать без использования функции «где»?
Извините за мой английский.
Сколько таблиц и моделей у вас здесь? Я вижу таблицу категорий, другую таблицу ('category'?) И не менее 2 модели 'Category' и' PropertyCategory', и вы спрашиваете о самостоятельности. Думаю, я не понимаю вашу структуру и то, что вы хотите достичь. –
Oh !! sorry , Я изменил все ошибки. Модель - это категория, а таблица, на которую ссылаются, - это категории. Я выразился так, как вы видите, потому что laravel говорит, что вы должны назвать свои таблицы во множественном числе, а его модель - единственной. – Developer
Вам следует рассмотреть возможность использования https://github.com/etrepat/baum. – ceejayoz