在Laravel Backpack中使用select2字段/列类型时,列表视图将显示外来实体的“ 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');
}
答案 0 :(得分:0)
由于已经过了几天,没有人回应,我以为我会发布我想出的答案。请注意,我非常怀疑这是否是正确的解决方案,但是对于我的项目而言,它会做到。
我为成绩模型添加了Laravel Observer。用户添加新记录后,观察者将访问会话表,使用键拉出会话名称,并将其作为列添加到“成绩”表中。
然后在背包中,我只显示“名称”列。
必须有一个比这更好的方法。。。但是现在就可以了。
答案 1 :(得分:0)
我看到您使用的是“ select2”列类型。这不是背包默认提供的东西-它只有一个“选择”列。
最有可能发生的事情是Backpack加载了“ text”列,因为它找不到“ select2”列。因此,ID。
尝试将“ select2”更改为“ select”。它应该对您有用,而无需任何观察员/其他任何东西。