覆盖 replationship 列以仅显示具有特定角色的用户

overriding replationship column to show only users with specific role

我创建了 BREAD 以使用 voyager 与关系列来显示所有用户,我希望此列仅显示具有管理员角色的用户。

我试图覆盖视图,但我认为它的错误选择有帮助吗?

@if($row->field == 'lead_belongsto_user_relationship')

@endif

我可以访问 view/add 视图中的列,但我不知道如何编辑结果数组或如何覆盖查询。

它正在显示我只想显示管理员列表的所有用户。

我终于用自定义控制器做到了。 步骤: 首先创建新控制器

php artisan make:controller LeadController

扩展 Voyagers 控制器

<?php

namespace App\Http\Controllers;

class LeadController extends \TCG\Voyager\Http\Controllers\VoyagerBaseController
{
    //...
}
?>

最后你可以覆盖 VoyagerBaseController

中的关系函数
        if($request->type == "lead_belongsto_user_relationship"){
            if ($search) {
                $total_count = app($options->model)->where($options->label, 'LIKE', '%'.$search.'%')->count();
                $relationshipOptions = app($options->model)->take($on_page)->skip($skip)
                    ->where($options->label, 'LIKE', '%'.$search.'%')->where("role_id",3)
                    ->get();
            } else {
                $total_count = app($options->model)->count();
                $relationshipOptions = app($options->model)->take($on_page)->skip($skip)->where("role_id",3)->get();
            }
        }

这里我将其覆盖为 select 只有 role_id = 3 的用户,您可以根据需要自定义它。

After that go to the BREAD-settings and fill in the Controller Name with your fully-qualified class-name in my case it is "\App\Http\Controllers\LeadController"