Столбец показывает номер идентификатора вместо атрибута внешнего ключа - PullRequest
0 голосов
/ 30 мая 2019

При использовании типа поля / столбца select2 в Laravel Backpack в представлении списка отображается «id» внешнего объекта вместо требуемого внешнего ключа (в данном случае «имя» сеанса).

Laravel 5.8.4, рюкзак 3.4. Я спросил в GitHub, и ответ был таков: мои отношения были неправильными в моих моделях. Я не думаю, что это проблема, поскольку имя загружается в режиме редактирования.

GradeCrudController

        $this->crud->addColumn([
            'label' => "Session",
            'type' => 'select2',
            'name' => 'session_id', // the db column for the foreign key
            'entity' => 'session', // the method that defines the relationship in your Model
            'attribute' => 'name', // foreign key attribute that is shown to user
            'model' => "App\Models\Session" // foreign key model
        ]);

Оценка (модель)

    public function session()
    {
      return $this->belongsTo('App\Models\Session');
    }

Сессия (модель)

    public function grades()
    {
      return $this->hasMany('App\Models\Grade');
    }

enter image description here

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Я вижу, вы используете тип столбца "select2".Это не то, что обеспечивает Backpack по умолчанию - в нем есть только столбец select.

Скорее всего, произошло то, что Backpack загрузил столбец "text", так как он не смог найти столбец "select2".Следовательно, ID.

Попробуйте изменить «select2» на «select».Он должен работать для вас без каких-либо наблюдателей / чего-либо еще.

0 голосов
/ 01 июня 2019

Поскольку прошло несколько дней и никто не ответил, я решил опубликовать ответ, который придумал. Обратите внимание, что я очень сомневаюсь, что это правильное решение, но для моего проекта это подойдет.

Я добавил Laravel Observer для модели ранга. Как только пользователь добавляет новую запись, наблюдатель посещает таблицу сеансов, извлекает название сеанса с помощью ключа и добавляет его в виде столбца в таблицу оценок.

Затем в рюкзаке я просто отображаю столбец «имя».

Должен быть лучший способ, чем этот ... Но сейчас это подойдет.

...