[英]How to display a complex relationship field for Laravel Backpack?
我有一个关系候选人 -> 空缺 -> 用户
候选人:
class Candidate extends Model
{
public function vacancy()
{
return $this->belongsToMany(
Vacancy::class,
'vacancy_has_candidate',
'candidate_id',
'vacancy_id'
);
}
}
空缺:
class Vacancy extends Model
{
public function candidate()
{
return $this->belongsToMany(
Candidate::class,
'vacancy_has_candidate',
'vacancy_id',
'candidate_id'
);
}
public function manager() {
return $this->hasMany(User::class, 'manager_id');
}
}
用户:
class User extends Authenticatable
{
public function vacancy()
{
return $this->belongsTo(Vacancy::class, 'manager_id');
}
}
我想在 СRUD 候选人中显示关系的字段,在该字段中我使用来自用户 model 的字段的 output 调用管理器方法。
例如
class CandidateCrudController extends CrudController
{
....
public function setupCreateOperation()
{
$this->crud->addFields([
[
'name' => 'vacancy',
'type' => 'relationship',
'label' => 'Vacancy',
'model' => Vacancy::class,
'entity' => 'manager', <- this method in Vacancy model
'attribute' => 'title', <- this column name in User
'ajax' => true,
]
]);
...
我收到一个错误“看起来没有正确定义字段空缺。App\Models\Candidate 模型上似乎不存在 manager() 关系”
我不明白为什么背包在 Candidates 中寻找经理方法,尽管在 model 中我指出了存在这种关系方法的空缺。 以及如何正确地做?
科尔德姆。
根据背包文档,您将无法实现这一目标:
entity
是定义当前 model 关系的方法,在您的情况下App\Models\Candidate
是 CrudController model。 所以实体应该有vacancy
关系。如果您使用Backpack\PRO 付费插件,您应该能够使用以下内容列出具有所需信息的空缺:
$this->crud->addField([
'name' => 'vacancy',
'subfields' => [
['name' => 'manager']
]
]);
如果您需要额外的 pivot 字段,您需要在关系中提供->withPivot
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.