Я использовал модель самореференции для создания вложенной категории:
class Category extends Model {
public function parent()
{
return $this->belongsTo('Category', 'parent_id');
}
public function children()
{
return $this->hasMany('Category', 'parent_id');
}
// recursive, loads all descendants
public function childrenRecursive()
{
return $this->children()->with('childrenRecursive');
}
}
и для получения родителей со всеми своими детьми:
$categories = Category::with('childrenRecursive')->whereNull('parent')->get();
Но у меня возникли проблемы с производительностью для моего большая таблица (вложенная категория 3 уровня)
Есть ли лучший способ получить категории?
И мой второй вопрос. предположим, что мои категории выглядят примерно так:
- Digital
- Mobiles
- Power Banks
- Cover & Bumper
- Computers
- Health
- Bar
И мои сообщения могут быть в любой категории, например Digital
или Mobiles
или Powerbank
Когда пользователь спрашивает меня о категории Digital
, которую я должен показать мои пользователи все мои сообщения в этой категории или в дочерних категориях Digital
. И когда меня спросят о Mobiles
, я должен показать своим пользователям все мои сообщения в этой категории или в дочерних категориях Mobile
Как я могу это сделать?