gpt4 book ai didi

laravel yajra 数据表如何在数据表列中显示 json 数据

转载 作者:行者123 更新时间:2023-12-04 03:03:10 26 4
gpt4 key购买 nike

我有一个成员表,其中包含带有 json 数据的“点”列,示例:

{"IDR":"100", "MYR":"50", "DOLLAR":"25"}

如何使用数据表在一个单元格表中显示 json 数据?

Name  | Poin       |
____________________
User 1|IDR : 100 |
|MYR : 50 |
|DOLLAR : 25 |
____________________
User 2|IDR : 50 |
|MYR : 80 |
|DOLLAR : 125|

这是 Controller

public function query(Request $request)
{
$query = DB::table('members');

$result = DataTables::of($query)->make(true);

return $result;
}

这是 blade.php

 var oTable = $('#datatable-responsive').DataTable({
autoWidth: false,
processing: true,
serverSide: true,
responsive: true,
ajax: {
url: "{{route('members.query')}}",
method: "POST",
data: function (d) {
d.search = $('input[type="search"]').val();
}
},
columns: [
{data: "name"},
{data: "poin"},
{data: "created_at"}
]
});

谢谢

最佳答案

首先考虑将 Member 模型中的 JSON 字段转换为数组:

class Member extends Model
{
protected $casts = [
'poin' => 'array',
];
}

https://laravel.com/docs/5.5/eloquent-mutators#array-and-json-casting

然后您可以为您的模型编写一个转换器,以便在您创建数据表时将 JSON 字段 point 输出为 HTML:

namespace App\Transformers\Datatables;

use League\Fractal;
use App\Models\Member;

class MemberTransformer extends Fractal\TransformerAbstract
{
public function transform(Member $member)
{
return [
'id' => $member->id,
'name' => $member->name,
'poin' => "IDR: {$member->poin['IDR']} <br> MYR: {$member->poin['MYR']} <br> DOLLAR: {$member->poin['DOLLAR']}"
];
}

}

https://yajrabox.com/docs/laravel-datatables/master/response/fractal

然后应用变压器...

public function query(Request $request)
{
$model = Member::query();

$result = DataTables::of($model)
->setTransformer('App\Transformers\Datatables\MemberTransformer')
->toJson();

return $result;
}

https://yajrabox.com/docs/laravel-datatables/master/engine/eloquent

您可能需要阅读文档并稍微修改一下这段代码,因为我还没有对其进行测试,它只是为了指导您试验转换器的想法。

关于laravel yajra 数据表如何在数据表列中显示 json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47262174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com