Laravel 4 Chumper \ Datatable包,所有记录都有相同的ID

时间:2014-07-07 18:14:33

标签: php laravel datatable

我正在使用Chumper的Datatable软件包进行laravel 4(https://github.com/Chumper/Datatable),几乎一切正常。这是我在控制器类中的函数,它为数据表返回json。

public function datatable() {
    $sortingColumns = array( "title", null, null, "link", "modules.title", "priority", "status" );
    $orderByColumn =  $sortingColumns[ $_POST["iSortCol_0"] ];

    $submodulesQuery = Submodule::select(DB::raw("submodules.*, modules.id, modules.title as module"))
                            ->join("modules", "submodules.module_id", "=", "modules.id");

    return Datatable::query($submodulesQuery)
                ->showColumns(array("title","description", "icon", "link", "module", "priority", "status"))
                ->searchColumns(array("submodules.title", "modules.title"))
                ->orderColumns( $orderByColumn )
                ->addColumn("title", function($submodule) {
                    $route = route("administration.submodules.show", $submodule->id);
                    return "<a href='$route'>$submodule->title</a>";
                })
                ->addColumn("icon", function($submodule) {
                    if( $submodule->icon === NULL || strlen($submodule->icon) === 0 )
                        return "NULL";
                    return "<i class='{$submodule->icon}'></i>";
                })
                ->addColumn("actions", function($submodule) {
                    $id = $submodule->id;
                    return 
                        "<div>
                            <a href='/administration/submodules/{$id}/edit'><button title='Edit submodule' type='button' class='btn btn-primary btn-xs'><i class='icon-pencil'></i></button></a>
                            <button title='Delete submodule' type='button' class='btn btn-danger btn-xs' onclick='deleteSubmodule({$id}); return false;'><i class='icon-trash'></i></button>
                        </div>";
                })->make();
}

对于名为&#39; actions&#39;的列我在最后添加,我需要获取子模块的ID,以便为编辑和删除操作提供正确的路由。但是在那时,作为参数过去的每个子模块具有相同的ID = 1.在数据库中,事物是不同的。这些ID是不同的,因为它们是主键。这有什么不对?为什么我将每个作为参数传递给回调函数的子模块对象获得相同的ID。

1 个答案:

答案 0 :(得分:0)

我在查询中发现了一个问题。我应该在modules.id列上添加别名,因为它覆盖了submodules.id,此时我只有一个模块。