[英]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.