隐藏数据透视表 Laravel 的一些嵌套属性

Posted

技术标签:

【中文标题】隐藏数据透视表 Laravel 的一些嵌套属性【英文标题】:Hide Some Nested Attribues of Pivot Table Laravel 【发布时间】:2021-03-22 15:56:10 【问题描述】:

我正在使用 laravel 8。我有一个包含四列的数据透视表:

    user_id operator_id 折扣 local_discount

我定义了两种关系,一种用于我的项目,一种用于 API

public function operators()
    return $this->belongsToMany(Operator::class,'reseller_rates','user_id','operator_id')->withPivot(['discount','local_discount']);


public function api_operators()
    return $this->belongsToMany(Operator::class,'reseller_rates','user_id','operator_id')->as('rates')->withPivot(['discount','local_discount']);

但是当我使用这种关系时,它给出了数据透视表的所有四列

$operators = $user['api_operators']

我知道我可以使用 laravel 的 makeHidden 方法隐藏操作符表的某些列

$operators->makeHidden(['discount','local_discount']);

但是如何隐藏与数据透视数据一起返回的 user_id 和 operator_id。有没有办法使用带有数据透视表嵌套属性的makeHidden来隐藏user_id和operator_id?或任何其他更好的方法来实现这一点。

谢谢

【问题讨论】:

【参考方案1】:

如果您想从您的 api 中隐藏这些列,我会改为使用 api 资源: https://laravel.com/docs/8.x/eloquent-resources#introduction

【讨论】:

我有一个解决办法。 foreach ($operators as $key => $operator) unset($operators[$key]['rates']['user_id']); unset($operators[$key]['rates']['operator_id']); 但难道没有比这更好的解决方案了吗?

以上是关于隐藏数据透视表 Laravel 的一些嵌套属性的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent:获取嵌套关系中的数据总和并将其添加为新属性

Lumen/Laravel Eloquent - 按数据透视表中的属性过滤

使用 Laravel 数据透视表的多行和多列输入表单

Laravel 在带有分页的数据透视表中搜索

数据透视表:隐藏两列不为空的行

Laravel 如何创建数据透视表?