找不到 withOrder 方法?

我在TopicsController和CategoriesController两个控制器中复制教材中的withOrder方法都会报错

$topics = $topic->withOrder($request->order)
                        ->where('category_id', $category->id)
                        ->paginate(20);

报错截图如下:
file
请问这是什么原因

CodeFarmer
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

因为你要在Topic.php下建立本地作用域

代码如下

    public function scopeRecent($query)
    {
        $query->orderBy('created_at', 'desc');
    }

    public function scopeRecentReplied($query)
    {
        $query->orderBy('updated_at', 'desc');
    }

    public function scopeWithOrder($query, $order)
    {
        switch ($order) {
            case 'recent':
                $query->recent();
                break;

            default:
                $query->recentReplied();
                break;
        }
    }

仔细看教程,教程里面有讲到。

另外,推荐你看一下官方文档的这一章:快速入门 | 《Laravel 5.5 中文文档》 | PHP / Laravel 社区文档

搜索本地作用域,了解清楚它的原理。

6年前 评论
讨论数量: 2

因为你要在Topic.php下建立本地作用域

代码如下

    public function scopeRecent($query)
    {
        $query->orderBy('created_at', 'desc');
    }

    public function scopeRecentReplied($query)
    {
        $query->orderBy('updated_at', 'desc');
    }

    public function scopeWithOrder($query, $order)
    {
        switch ($order) {
            case 'recent':
                $query->recent();
                break;

            default:
                $query->recentReplied();
                break;
        }
    }

仔细看教程,教程里面有讲到。

另外,推荐你看一下官方文档的这一章:快速入门 | 《Laravel 5.5 中文文档》 | PHP / Laravel 社区文档

搜索本地作用域,了解清楚它的原理。

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!