我正在使用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。
答案 0 :(得分:0)
我在查询中发现了一个问题。我应该在modules.id列上添加别名,因为它覆盖了submodules.id,此时我只有一个模块。