隐藏数据透视表 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:获取嵌套关系中的数据总和并将其添加为新属性