【发布时间】:2014-08-28 07:38:05
【问题描述】:
我正在为 laravel 4 (https://github.com/Chumper/Datatable) 使用 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();
}
对于我在最后添加的名为“操作”的列,我需要获取子模块的 ID,以便为编辑和删除操作提供正确的路径。但是,此时作为参数过去的每个子模块都具有相同的 ID = 1。在数据库中,情况是不同的。这些 ID 是不同的,因为它们是主键。这里有什么问题?为什么作为参数传递给回调函数的每个子模块对象都获得相同的 ID。
【问题讨论】: