我试图改变模型以显示字符串数组而不是对象数组。
当前输出
{
"id": 1,
"company_name": "blah"
"language": [
{
"name": "English"
},
{
"name": "French"
}
]
},
{
"id": 2,
"company_name": "blah2"
"language": [
{
"name": "English"
},
{
"name": "French"
}
]
}
期望输出
{
"id": 1,
"company_name": "blah"
"language": ["English","French"]
},
{
"id": 2,
"company_name": "blah2"
"language": ["English","French"]
}
合作伙伴模型
class Partner extends Eloquent
{
protected $table = 'property_managers';
protected $visible = array('id','company_name','language');
public function language(){
return $this->belongsToMany('Language', 'property_manager_language', 'property_manager_id', 'language_id');
}
}
语言模型
class Language extends Eloquent
{
protected $table = 'languages';
protected $visible = array('name');
public function propertyManager()
{
return $this->belongsToMany('PropertyManager');
}
}
我通过下面的代码段
访问它 $pm = Partner::with('language')->get();
我调查了变异器,但它似乎没有在合作伙伴模型中找到该属性。
public function getLanguageAttribute(){
//run my code to flatten to array
}
所以我很好奇mutators是否不参与联接或者如何修改联接的回报。我可以在语言模型中添加一个mutator,但这只会修改特定模型的属性。任何见解都会有所帮助。感谢
答案 0 :(得分:0)
在你的模特中,
public function getLanguagesAttribute(){
return array_pluck(collect($this->language)->toArray(), 'name');
}
luego prueba con esto
$partner = Partner::find(1);
return $partner->languages;