Laravel 可以选择为每个模型添加一个 $appends 数组,通过为每个模型添加访问器,使附加值自动可用,就像它们是数据库属性一样。

这通常非常方便,除了在这种情况下,我只需要获取我放入 select() 的字段,因为 DataTables 只期待我发送给它的内容。

例子:

Item::select(['image', 'name', 'color']);

将在属性中的 color 之后返回附加字段。

返回结果时如何强制排除附加值?

或者,如何让 DataTables 忽略某些属性?

不确定哪个是时间成本最低的路线。

当前使用 yajra/laravel-datatables 包将数据发送到 jQuery DataTables AJAX 请求。

最佳答案

您可以调用集合对象中的每个函数,然后使用 setHidden 方法排除这样不需要的字段

$item= Item::select(['image', 'name', 'color'])->get()->each(function($row){
                    $row->setHidden(['appendedField1', 'appendedField2']);
                });

对于 yajra/laravel-datatables,您可以使用类似
$item= Item::select(['image', 'name', 'color']);
return Datatables::of($item)->remove_column('appendedField1');

关于php - 从模型结果中排除 Laravel 附加值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33405661/

10-16 18:58