找不到 withOrder 方法?

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

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

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

CodeFarmer
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《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 社区文档

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

5年前 评论
讨论数量: 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 社区文档

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

5年前 评论

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