Je suis nouveau sur Laravel. J'ai essayé de définir un 1 à beaucoup de relations entre le message et la catégorie, je peux accéder à la catégorie en utilisant le post_id mais pas l'inverse. J'obtiens l'erreur suivante,
"Essayer d'obtenir la propriété 'catégorie' de non-objet"
Ceci est mon web.php
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Category extends Model { protected $fillable = ['name']; public function posts() { return $this->hasMany('App\Post'); } }
Ceci est de post.php
<?php namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Softdeletes; class Post extends Model { protected $fillable =[ 'title', 'content', 'category_id', 'featured', 'slug' ]; public function category() { return $this->belongsTo('App\Category'); } public function tag() { return $this-> belongsToMany('App\Tag'); } use SoftDeletes; public function getFeaturedAttribute($featured) { return asset($featured); } .......
Ceci est de category.php
public function posts() { return $this->hasMany('App\Post'); }
Ceci est de Post.php p >
public function category() { return $this->belongsTo('App\Category'); }
Voici Category.php
<?php use App\Post; Route::get('/test',function() { return App\Post::find(3)->category; });
3 Réponses :
La méthode find trouve un modèle qui a un clé primaire donnée. Dans votre web.php App \ Category :: find (7)
renvoie une instance de catégorie de l'id 7. Je suppose que ce que vous essayez de faire est App \ Post :: find ( 7) -> catégorie
en d'autres termes, vous essayez de récupérer le message de l'id 7 et d'obtenir sa catégorie; Sinon, vous essayez probablement d'accéder aux messages d'une catégorie de l'id 7, auquel cas vous devriez coder App \ Category :: find (7) -> messages
.
Ouais, j'essaie de récupérer le message de l'id 7 et d'obtenir sa catégorie. Alors pourquoi est-ce que j'obtiens l'erreur?
@KidusYared vous devez coder App \ Post :: find (7) -> category
pour récupérer le message de l'id 7 et obtenir sa catégorie et non App \ Category :: find (7) -> category;
J'ai mal tapé la première fois, j'ai édité le code pour ..... return App \ Post :: find (3) -> category;
Non, toujours le même problème
@KidusYared Pouvez-vous mettre à jour votre message et afficher vos classes App \ Category et App \ Posts?
Je l'ai mis à jour.
@Kidusyared si vous obtenez toujours l'erreur de non-objet, veuillez var_dump (app \ post :: Recherche (3)); Code> Pour voir si vous obtenez un message.
Peut-être avez-vous besoin de App \ Category :: find (7) -> posts car le modèle de catégorie n'a vraiment pas de propriété de catégorie
Non j'ai vérifié ça, pas le problème
Je ne sais pas quel était le problème. J'ai tout fermé et redémarré. Tout a bien fonctionné.
Une catégorie n'appartient sûrement pas à une catégorie? Vous avez probablement mentionné
Post :: find (7) -> category;
? OuApp \ Category :: find (7) -> posts;
?Je l'ai édité pour ..... return App \ Post :: find (3) -> category;