【问题标题】:overriding replationship column to show only users with specific role覆盖 relationship 列以仅显示具有特定角色的用户
【发布时间】:2019-06-23 21:18:51
【问题描述】:

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

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

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

@endif

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

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

【问题讨论】:

    标签: laravel voyager


    【解决方案1】:

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

    php artisan make:controller LeadController
    

    扩展航海家控制器

    <?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();
                }
            }
    

    在这里,我将其覆盖为仅选择 role_id = 3 的用户,您可以根据需要对其进行自定义。

    然后转到 BREAD-settings 并填写控制器名称 在我的情况下,使用您的完全限定的类名 "\App\Http\Controllers\LeadController"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      相关资源
      最近更新 更多