如何更改集合中的属性?
因此,返回的是属性已更改的模型集合,而不是数组的集合。
问题是,我想做某种翻译演示者,所以当我得到集合时,我可以用dd($ collection)代替“ name”显示“ nome”,也可以使用response()- > json($ collection)将显示更改后的名称。
所以类似$ presenterNames = ['name'=>'nome','id'=>'identificador'];而且这里没有的名字会正常调用。
Collection {#213 ▼
#items: array:2 [▼
0 => Category {#215 ▼
+timestamps: false
#fillable: array:2 [▶]
#connection: "mysql"
#table: "categories"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:3 [▼
"id" => 1
"name" => "categoria1"
"slug" => "categoria1"
]
#original: array:3 [▶]
#changes: []
#casts: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
#hidden: []
#visible: []
#guarded: array:1 [▶]
#slugOptions: null
}
1 => Category {#219 ▶}
]
}
所以基本上我想改变
#attributes: array:3 [▼
"id" => 1
"name" => "categoria1"
"slug" => "categoria1"
]
对此
#attributes: array:3 [▼
"identificador" => 1
"nome" => "categoria1"
"slug" => "categoria1"
]
通过使用assoc数组进行分类。
答案 0 :(得分:1)
解决方案:
在模型中添加以下代码。
protected $appends = ['nome'];
public function getNomeAttribute(){
return $this->attributes['name'];
}
您可以通过查询$ modelObj-> nome来访问它;
对所有必需的属性执行相同的操作。
这也将反映在您的JSON响应中。
谢谢
参考:https://laravel.com/docs/5.7/eloquent-mutators#defining-an-accessor