Я пытаюсь изменить модель для отображения массива строк, а не массива объектов.
Текущий выход
{
"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
}
Поэтому мне любопытно, не будут ли мутаторы работать с объединениями, или как вы сможете изменить доходность объединения. Я могу добавить мутатор к модели языка, но это только изменит атрибуты этой конкретной модели. Любое понимание будет полезно. Спасибо
В вашей модели
public function getLanguagesAttribute(){
return array_pluck(collect($this->language)->toArray(), 'name');
}
Luego Prueba Con Esto
$partner = Partner::find(1);
return $partner->languages;
Других решений пока нет …