Laravel Yajra 数据表 [object 对象],[object 对象] 错误
Laravel Yajra Datatables [object Object],[object Object] Error
正在以数组格式将数据记录到数据库工作者列中。然后,我会 return 以适当的 JSON 格式显示此数据。我的问题只是从 workers 列中的 nested array 中获取 spname 值,并将其显示在数据表字段视图中。我的代码如下。
Api 控制器
public function apiZimmet()
{
/*
test... ok it works
$wdata=Zimmet::first();
$workers = json_decode($wdata->workers , true);
foreach($workers as $key => $value) {
echo $value['spname']."<br>";
}
*/
$data = Zimmet::with('proje:id,name');
return Datatables::eloquent($data)
->editColumn('workers', function ($data) {
$workers = json_decode($data->workers , true);
return $workers;
})
->addColumn('action', function ($data) {
return '<ul class="header-dropdown m-r--5">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<i class="material-icons">more_vert</i>
</a>
<ul class="dropdown-menu pull-right">
<li>
<a href="/system/stok-personeli/'.$data->id.'/edit" data-toggle="tooltip" data-original-title="Edit">Duzenle</a>
</ul>
</li>
</ul>';
})->make(true);
}
Return API 文件如下
"data":[
{
"id":"12",
"name":"test",
"sicil_no":"1234",
"proje_id":"1",
"visible":0,
"workers":[
{
"spid":"1",
"spsicil":"35678909",
"spname":"ok"
},
{
"spid":"6",
"spsicil":"123456",
"spname":"sdsf sdfsdf"
}
],
"deleted_at":null,
"created_at":"2020-04-02 23:29:23",
"updated_at":"2020-04-02 23:29:23",
"proje":{
"id":"1",
"name":"deneme"
},
"action":"edit"
}
],
查看文件ajax
ajax: {
url: '{{route('api.zimmet')}}',
method: 'POST'
},
columns: [
{data: 'id', name: 'id', visible:false, searchable:false},
{data: 'name', name: 'name'},
{data: 'sicil_no', name: 'sicil_no'},
{data: 'proje.name', name: 'proje.name'},
{data: 'workers', name: 'workers'},
{data: 'action', name: 'action', orderable: false, searchable: false}
],
当我在此处调用workers 列时,出现[object Object]、[object Object] 错误。我想要的是在视图文件中显示workers中的spname值。
此致
因为 workers
实际上是一个对象数组,如果您使用 data: 'workers'
.
,您将得到准确的对象名称(对象名称)
Datatables 使用其 array bracket syntax 支持这种情况。因此,例如您可以这样做:
{data: 'workers[, ].spname', name: 'workers'},
使用您的数据,这将在 table 单元格中打印出 ok, sdsf sdfsdf
。它遍历所有 spname
项,并用逗号分隔它们,后跟 space.
如果您想要更精致的东西,您可能需要预处理 JSON - 例如,将其展平。但以上可能足以满足您的需求。
正在以数组格式将数据记录到数据库工作者列中。然后,我会 return 以适当的 JSON 格式显示此数据。我的问题只是从 workers 列中的 nested array 中获取 spname 值,并将其显示在数据表字段视图中。我的代码如下。
Api 控制器
public function apiZimmet()
{
/*
test... ok it works
$wdata=Zimmet::first();
$workers = json_decode($wdata->workers , true);
foreach($workers as $key => $value) {
echo $value['spname']."<br>";
}
*/
$data = Zimmet::with('proje:id,name');
return Datatables::eloquent($data)
->editColumn('workers', function ($data) {
$workers = json_decode($data->workers , true);
return $workers;
})
->addColumn('action', function ($data) {
return '<ul class="header-dropdown m-r--5">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<i class="material-icons">more_vert</i>
</a>
<ul class="dropdown-menu pull-right">
<li>
<a href="/system/stok-personeli/'.$data->id.'/edit" data-toggle="tooltip" data-original-title="Edit">Duzenle</a>
</ul>
</li>
</ul>';
})->make(true);
}
Return API 文件如下
"data":[
{
"id":"12",
"name":"test",
"sicil_no":"1234",
"proje_id":"1",
"visible":0,
"workers":[
{
"spid":"1",
"spsicil":"35678909",
"spname":"ok"
},
{
"spid":"6",
"spsicil":"123456",
"spname":"sdsf sdfsdf"
}
],
"deleted_at":null,
"created_at":"2020-04-02 23:29:23",
"updated_at":"2020-04-02 23:29:23",
"proje":{
"id":"1",
"name":"deneme"
},
"action":"edit"
}
],
查看文件ajax
ajax: {
url: '{{route('api.zimmet')}}',
method: 'POST'
},
columns: [
{data: 'id', name: 'id', visible:false, searchable:false},
{data: 'name', name: 'name'},
{data: 'sicil_no', name: 'sicil_no'},
{data: 'proje.name', name: 'proje.name'},
{data: 'workers', name: 'workers'},
{data: 'action', name: 'action', orderable: false, searchable: false}
],
当我在此处调用workers 列时,出现[object Object]、[object Object] 错误。我想要的是在视图文件中显示workers中的spname值。
此致
因为 workers
实际上是一个对象数组,如果您使用 data: 'workers'
.
Datatables 使用其 array bracket syntax 支持这种情况。因此,例如您可以这样做:
{data: 'workers[, ].spname', name: 'workers'},
使用您的数据,这将在 table 单元格中打印出 ok, sdsf sdfsdf
。它遍历所有 spname
项,并用逗号分隔它们,后跟 space.
如果您想要更精致的东西,您可能需要预处理 JSON - 例如,将其展平。但以上可能足以满足您的需求。