首页 > 解决方案 > 排序网格列中的Laravel问题

问题描述

我是 Laravel 的新手,我正在用 Laravel 5.8 和 SqlServer 开发一个站点。

目前,我面临一个可排序的列网格的问题。我已按照有关 Kyslink 包的说明进行操作:https ://github.com/Kyslik/column-sortable 。

但由于我不明白的原因,当我尝试打开带有可排序网格的页面时,会出现以下消息:“调用未定义的方法 Illuminate\Database\Query\Builder::sortable()”

我在互联网上找到了很多关于此的建议,但没有一个适合我。

也许原因是我的网格重现了一个 sql 视图?

如果我删除 sortable() 方法,视图将起作用。

//我的控制器方法代码是这样的

class AdminController extends Controller
{
    use Sortable;

    protected $sortable = [
       'id', 'ticket_id', 'type_id', 'start_time', 'end_time', 'user_id', 'note'
    ];

    public function activities() {

       try {
            $activities = DB::table('activities')
            ->leftJoin('users', 'activities.user_id', '=', 'users.id')
            ->leftJoin('types', 'activities.type_id', '=', 'types.id')
            ->leftJoin('tickets', 'activities.ticket_id', '=', 'tickets.id')
            ->select('activities.*', 'users.name as user_name', 'types.description as type_description', 'tickets.subject')
            ->sortable()
            ->paginate(config('app.num_pages'));
        }
        catch (\Kyslik\ColumnSortable\Exceptions\ColumnSortableException $e) {
            dd($e);
        }

        return view('activity.activities', compact('activities'));
    }
}

标签: laraveljquery-ui-sortable

解决方案


您应该Sortable在模型中使用特征,而不是控制器!

你应该放置use Sortable;

protected $sortable = [
    'id', 'ticket_id', 'type_id', 'start_time', 'end_time', 'user_id', 'note'
];

在模型中。


推荐阅读