【问题标题】:Laravel Restful Api: Trying to get property of non-objectLaravel Restful Api:试图获取非对象的属性
【发布时间】:2022-07-01 21:49:14
【问题描述】:

我正在使用 Laravel 5.8,我想返回文章的一些特定数据。

所以我做了这个 Api 控制器:

class ArticleController extends Controller
{
    public function index()
    {
        $articles = Article::find(1);
        return new \App\Http\Resources\v1\Article($articles);
    }
}

然后创建了这个资源:

使用 Illuminate\Http\Resources\Json\Resource;

class Article extends Resource
{
    /**
     * Transform the resource collection into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
           'art_title' => $this->art_title,
           'art_description' => $this->art_description
        ];
    }
}

所以基本上每篇文章都有一个名为 art_title 的字段作为文章标题,art_description 作为文章正文。

但是当我运行这段代码时,我得到了这个错误:

ErrorException (E_NOTICE) 试图获取属性“art_title”的 非对象

我真的不知道这里到底出了什么问题?所以如果你知道,请帮我解决这个问题,因为我很头疼!

【问题讨论】:

    标签: php laravel api rest laravel-5.8


    【解决方案1】:

    首先使用find()new Article() 资源。您正在处理一个单一的对象。因此,今后更容易将其命名为单数以避免混淆。

    $article = Article::find(1);
    

    其次,我相信没有找到文章 1,因为您正在访问空对象的属性,请检查文章 1 是否存在。但今后,更正确的方法是简单地使代码失败并抛出适当的异常。

    $article = Article::findOrFail(1);
    

    然后你会知道,什么时候没有文章。

    【讨论】:

      猜你喜欢
      • 2015-09-22
      • 2017-03-20
      • 2014-03-25
      • 2015-01-25
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多