簡體   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