繁体   English   中英

如何显示 Laravel Backpack 的复杂关系字段?

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

查看Backpack 网站上的 BelongsToMany 文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM