Модель Laravel / Eloquent mutate при соединении

Я пытаюсь изменить модель для отображения массива строк, а не массива объектов.

Текущий выход

{
"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
}

Поэтому мне любопытно, не будут ли мутаторы работать с объединениями, или как вы сможете изменить доходность объединения. Я могу добавить мутатор к модели языка, но это только изменит атрибуты этой конкретной модели. Любое понимание будет полезно. Спасибо

0

Решение

В вашей модели

public function getLanguagesAttribute(){
return array_pluck(collect($this->language)->toArray(), 'name');
}

Luego Prueba Con Esto

$partner = Partner::find(1);
return $partner->languages;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]