Laravel éloquent obtenir relation comte

- Je utiliser Laravel 5.3.

J'ai 2 tables :

Articles
---------
id
cat_id
title

Et

Category
---------
id
parent_id
title

J'ai défini mes relations dans mes modèles :

//Article model
public function category()
{
    return $this->belongsTo(Category::class);
}

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

Est-il un moyen facile à l'aide Éloquent d'avoir une liste de catégories avec nombre d'articles. La difficulté est que je veux catégories de groupes où id_parent = 0, c'est à dire que je veux afficher seulement les catégories mères avec nombre d'articles dans les enfants.

J'ai essayé quelque chose comme ça :

    $category = new \App\Models\Category();
    $categoryTable = $category->getTable();

    return $category->leftJoin('article', 'article.cat_id', '=', 'category.id')
        ->whereIn('article.cat_id', function($query)
            {
                $query->select('cat_id')
                    ->from('categories')
                    ->where('categories.parent_id', ???)
                    ->orWhere($this->tableName .'.cat_id', $id);
            })
        ->groupBy('cat_id');

Mais je suis perdu...

Combien de niveaux de hiérarchie sera là, dans le tableau category?
Seulement 2 max, pas plus

OriginalL'auteur Vincent Decaux | 2016-12-15