无法从 1 到多关系访问 laravel 5.8 中的数据

我是 Laravel 新手。我一直在尝试在帖子和类别之间设置一对多的关系,我可以使用 post_id 访问类别,但反之则不行。我收到以下错误,


“试图获取非对象的属性‘类别’”


这是我的 web.php


<?php

use App\Post;


Route::get('/test',function()

{

    return App\Post::find(3)->category;


});

这是来自 post.php


    public function category() 

    {

        return $this->belongsTo('App\Category');

    }

这是来自category.php


 public function posts()

    {

        return $this->hasMany('App\Post');

    }


这是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);

    }

.......


这是类别.php


<?php


namespace App;



use Illuminate\Database\Eloquent\Model;


class Category extends Model

{


protected $fillable = ['name'];


    public function posts()

    {

        return $this->hasMany('App\Post');

    }

}


开满天机
浏览 104回答 3
3回答

守着星空守着你

也许您需要 App\Category::find(7)->posts 因为类别模型确实没有类别属性

胡子哥哥

我不知道问题是什么,我关闭了所有内容并重新启动。一切都很好。

慕仙森

find方法查找具有给定主键的模型。在您的 web.php 中App\Category::find(7)返回 id 7 的类别实例。我猜您想要做的就是App\Post::find(7)->category换句话说您正在尝试检索 id 7 的帖子并获取其类别;如果不是,您可能正在尝试访问 id 7 的某一类别的帖子,在这种情况下您应该编码App\Category::find(7)->posts。
打开App,查看更多内容
随时随地看视频慕课网APP