Laravel Restful Api:在 null 上调用成员函数 toBase()

发布于 2025-01-21 01:45:54 字数 1272 浏览 5 评论 0原文

我正在使用Laravel 5.8,我想从API路线中检索一些数据:

Route::prefix('v1')->namespace('Api\v1')->group(function(){
    Route::get('/articles','ArticleController@index');;
});

然后我也制作了一个资源收集和一个控制器:

articleCollection.php

public function toArray($request)
    {
        return parent::toArray($request);
    }

ARTICLECONTROLLER

public function index()
    {
        $articles = Article::all();
        return new ArticleCollection($articles);
    }

现在它正确显示了数据:

{"data":[{"art_id":3,"art_cat_id":15,"art_author_id":23973,"art_title":"\u0627\u062d\u06cc\u0627\u06cc...

但是当我将资源收集更改为此时:

public function toArray($request)
    {
        return [
            'title' => $this->art_title,
            'desc' => $this->art_description,
        ];
    }

尝试在控制器中找到特定的文章:

public function index()
    {
        $articles = Article::find(1);
        return new ArticleCollection($articles);
    }

我会以某种方式获得此错误:

致命性 呼叫null上的成员函数tobase()

那么这里出了什么问题?我该如何解决这个问题?

I'm using Laravel 5.8 and I wanted to retrieve some data from an Api route:

Route::prefix('v1')->namespace('Api\v1')->group(function(){
    Route::get('/articles','ArticleController@index');;
});

Then I made a Resource Collection and a Controller as well:

ArticleCollection.php:

public function toArray($request)
    {
        return parent::toArray($request);
    }

ArticleController:

public function index()
    {
        $articles = Article::all();
        return new ArticleCollection($articles);
    }

Now it properly shows data:

{"data":[{"art_id":3,"art_cat_id":15,"art_author_id":23973,"art_title":"\u0627\u062d\u06cc\u0627\u06cc...

But when I change the Resource Collection to this:

public function toArray($request)
    {
        return [
            'title' => $this->art_title,
            'desc' => $this->art_description,
        ];
    }

And trying to find an specific article in the Controller:

public function index()
    {
        $articles = Article::find(1);
        return new ArticleCollection($articles);
    }

I will get this error somehow:

FatalThrowableError
Call to a member function toBase() on null

So what's going wrong here? How can I solve this issue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

随遇而安 2025-01-28 01:45:54

将其更改

public function index()
    {
        $articles = Article::find(1);
        return new ArticleCollection($articles);
    }

为:

public function index()
    {
        $articles = Article::where('id',1)->get();
        return new ArticleCollection($articles);
    }

这是因为查找仅返回一条记录,并且您要将其转换为集合,通过使用 get() 您可以按照您的意图返回一个集合。

Change this:

public function index()
    {
        $articles = Article::find(1);
        return new ArticleCollection($articles);
    }

to this:

public function index()
    {
        $articles = Article::where('id',1)->get();
        return new ArticleCollection($articles);
    }

This is because the find returns just one record and you are converting that to a collection, by using get() you can return a collection as you intend to here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文