Je suis confus sur la façon dont je devrais nommer ma méthode dans un modèle. Je sais que dans la documentation de Laravel Eloquent cela suppose d'être pluriel mais dans certains cas, cela me donne des erreurs. par exemple, j'ai cette requête:Convention de nommage pour la méthode de relation Eloquent
$posts = Post::with(['comments','user', 'tag'])->findOrFail($id);
puis j'imprimer les résultats comme celui-ci:
echo "<h1>".$posts->title.'</h1>';
echo "<h2> created by: ".$posts->user->name.'</h2>';
echo "<p>".$posts->body."</p>";
//echo $posts->comments;
echo '<h3>Komentar :</h3>';
foreach ($posts->comments as $comment) {
echo $comment->body.'<br>';
}
echo '<h3>Tags :</h3>';
foreach ($posts->tags as $tag) {
echo '<a href="/tag/'. $tag->id .'">'.$tag->name.'</a><br>';
}
il me donner une erreur:
"Call to undefined relationship [tag] on model [App\Post]."
mais quand je change " Les balises "fonctionnent à l'intérieur de Post Model en" tag ", les problèmes ont disparu. donc quelqu'un peut-il expliquer ce que c'est une convention de nom pour cela? Merci.
pour plus d'informations, voici mon modèle post:
class Post extends Model
{
/**
* Get the comments for the blog post.
*/
public function comments()
{
return $this->hasMany('App\Comment');
}
public function user(){
return $this->belongsTo('App\User');
}
public function tags(){
return $this->belongsToMany('App\Tag');
}
}
s'il vous plaît poster votre modèle POST aussi. –
fait. J'ai ajouté mon modèle en question. – Ying
Parce que votre relation a été nommée 'tags' et non 'tag' ... Vous utilisez le nom de la relation dans with(). Vous pouvez les nommer comme vous voulez, juste être cohérent. – Devon