devAston
@devAston
Web developer

Laravel-admin не отображает в форме belongsToMany, какие варианты?

Имеется модель Promo:
protected $table = 'promo';
// ...
public function locations()
{
    return $this->belongsToMany(Cities::class, 'cities_promo');
}

Код контроллера в laravel-admin
protected function form()
{
    $location = Cities::pluck('name', 'id');

    $form = new Form(new Promo);

    $form->text('title', __('Наименование'));
    $form->textarea('desc', __('Описание'));
    $form->multipleSelect('locations')->options($location);

    return $form;
}

Суть в том, что он не отображает значения, которые были выбраны ранее и сохранены.
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
devAston
@devAston Автор вопроса
Web developer
Промежуточным решением оказалось использование атрибута.
Необходимо что-бы формат для multipleSelect(и прочих) был в формате массива [1,2,3 ... ,7].
При обычной связи передается
массив вида
{
['id' => 1,
'name' => 'Moscow',
...
],
['id' => 2,
'name' => 'Ekb',
...
],
}

Поэтому, для формализации я использовал сторонний атрибут "Cities" к модели "Promo".
Конечный код
...
    //Add extra attribute
    //These attributes will be written to the database, if you do not want this, then do not advertise!
    //protected $attributes = ['cities'];

    //Make it available in the json response
    protected $appends = ['cities'];
    public function getCitiesAttribute()
    {
        return $this->locations->pluck('id');
    }

    public function setCitiesAttribute($value)
    {
        $this->locations()->sync($value);
    }


Если, есть другие предложения, я готов выслушать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы