#mysql #database #laravel #eloquent #relationship
#mysql #База данных #laravel #красноречивый #связь
Вопрос:
У меня есть categories
таблица с такой структурой:
id
title
category_id
Отношения модели категории:
public function categories()
{
return $this->hasMany(Category::class);
}
public function subcategories()
{
return $this->categories()->with('subcategories');
}
public function parent()
{
return $this->belongsTo(Category::class);
}
Пример данных таблицы:
{
"id": 1,
"title": "Product Categories Group",
"category_id": null
},
{
"id": 2,
"title": "Buy",
"category_id": 1
},
{
"id": 3,
"title": "Sale",
"category_id": 1
},
{
"id": 4,
"title": "Fruits",
"category_id": 2
},
{
"id": 5,
"title": "Apple",
"category_id": 4
}
В этом случае, как я могу проверить родительскую категорию, это Buy
категория или Sale
использование id
. Например, как проверить Apple
родительскую категорию Buy
или Sale
категорию?
Ответ №1:
вы можете использовать цикл while, пока он не найдет родителя
попробуйте это
$category = Category::where('title', 'Apple')->firstOrFail();
if (!$category->category_id) {
$parentCategory = $category;
}
while (isset($category->category_id)) {
$category = Category::find($category->category_id);
}
return $parentCategory;
Комментарии:
1. я думаю, это должно быть рекурсивно.