0
votes

Impossible d'accéder aux données dans laravel 5.8 de 1 à plusieurs relations

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;

});


2 commentaires

Une catégorie n'appartient sûrement pas à une catégorie? Vous avez probablement mentionné Post :: find (7) -> category; ? Ou App \ Category :: find (7) -> posts; ?


Je l'ai édité pour ..... return App \ Post :: find (3) -> category;


3 Réponses :


0
votes

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 .


7 commentaires

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)); Pour voir si vous obtenez un message.



0
votes

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


1 commentaires

Non j'ai vérifié ça, pas le problème



0
votes

Je ne sais pas quel était le problème. J'ai tout fermé et redémarré. Tout a bien fonctionné.


0 commentaires