Hello les devis,
Mon problème est le suivant :
J'ai un model Tag qui est associé à un autre model Blog par une relation ManyToMany (c'est à dire avec une table intermédiaire blog_tag).
Je souhaite alors afficher les 5 premiers des Tags d'un Blog (rangé par order alphabétique)
J'ai essayé ceci :
$tags = $blog->tags()->orderBy("name")->paginate(5);
mais ça ne fonctionne pas. J'ai ce message d'erreur
{"message": "Method Illuminate\\Database\\Eloquent\\Collection::orderBy does not exist.","exception": "BadMethodCallException","file": "E:\\PROJETS\\WEB\\backendlamater\\vendor\\laravel\\framework\\src\\Illuminate\\Support\\Traits\\Macroable.php","line": 103,"trace": [...]}
Premiere question si tu veux les 5 premiers pour ne pas faire par exemple
$tags = $blog->tags()->orderBy("name")->limit(5);
Fait voir la relation que tu as entre Tag et Blog dans le model Blog. Parce que ton erreur montre que tu as une Collection a la place d'une relation ManyToMany (Query Builder)
@wdjopa tags()
ces't une collection, tu as besoin d'une relationship pour utilise orderBy()
donc rassure toi que dans to model Blog tags()
retourne un relationship instance de HasMany()
@mckenziearts, la relation était :
// App/Models/Blog.phpclass Blog { public function Tag() { return $this->belongsToMany(Blog::class); }}
// App/Models/Tag.phpclass Tag { public function blogs() { return $this->hasMany(Tag::class); }}
J'ai remarqué que j'avais fait une erreur dans la définition des relations
Veuillez vous connecter ou créer un compte pour participer à cette conversation.