在 Laravel Backpack 中需要列出具有特定角色的用户

In Laravel Backpack need to list users with specific role

请查看下面的详细信息,其中我有一个组织模块。我可以在其中创建一个组织,其所有者的角色为“组织”。 The third input is a dropdown where we need to select the user with role "organization"

protected function addOrganizationFields(){
    $this->crud->addFields([
        [
            'name'  => 'name',
            'label' => __('Organization Name'),
            'type'  => 'text',
        ],
        [
            'name'  => 'billing_information',
            'label' => __('Billing Information'),
            'type'  => 'textarea',
        ],
        [
            'name' => 'owner_id',
            'label' => __('Organization Owner'),
            'type' => 'select2',
            'entity' => 'owners_list',
            'attribute' => 'name',
            'model' => "App\User",
        ]
    ]);
}

我在组织模块中写了这段代码。

public function owners_list(){        
    return User::whereHas('roles', function($q){
        $q->where('name', 'member');
    })->get();
}

我在组织模型关系中写了这个。 但在下拉列表中显示所有用户的列表。 谁能告诉我要做什么。

您可以使用文档中提到的“选项”属性从 select2 字段中删除选项 - https://backpackforlaravel.com/docs/4.1/crud-fields

    [
        'name' => 'owner_id',
        'label' => __('Organization Owner'),
        'type' => 'select2',
        'entity' => 'owners_list',
        'attribute' => 'name',
        'model' => "App\User",

        // add something like this

        'options'   => (function ($query) {
              return $query->whereHas('roles', function($q){
                              $q->where('name', 'member');
                         })->get();
         }), // force the related options to be a custom query, instead of all(); you can use this to filter the results show in the select
    ]