【问题标题】:How do I filter a select list in Laravel Nova that uses a BelongsTo field?如何过滤 Laravel Nova 中使用 BelongsTo 字段的选择列表?
【发布时间】:2020-08-06 15:40:03
【问题描述】:

我有一个测验资源,用于定义测验中的问题和答案。

BelongsTo 字段用于选择该测验的创建者 - 它从我的用户表中提取此信息。但是,我只想拉取“role_id”为 1 或 2 的用户。

我正在尝试使用相关函数,但它似乎不想识别它的存在。

我的测验资源:

class Quiz extends Resource
{
    /**
     * The model the resource corresponds to.
     *
     * @var string
     */
    public static $model = 'App\Quiz\Quiz';

public function fields(Request $request)
    {

        return [
            ...

            BelongsTo::make('User', 'users','\App\Nova\User')
                ->display(function($user){
                        return $user->first_name . ' ' . $user->last_name;
                }),

            ...
        ];
    }
}

我的 Nova 用户模型:

class User extends Resource
{

     public static $model = 'App\Account\User';

public static function relatableQuizzes(NovaRequest $request, $query)
    {
        return $query->where('role_id', 1);
    }
}

我尝试过使用不同的函数名,包括: 相关用户 相关用户 相关测验 相关测验 相关测验

但每次都没有效果。

如何按角色 ID 过滤此用户列表?

【问题讨论】:

    标签: laravel laravel-5 eloquent laravel-nova


    【解决方案1】:

    试试这样的

    
      public function options(Request $request)
        {
    
            $supplier = Supplier::all()->mapWithKeys(function($item) {
                return [
                    $item['name'] => $item['item']
                ];
            }); 
    
            return $supplier;
        }
    
    
    

    【讨论】:

      【解决方案2】:

      当您从Quiz 资源中关联Users 时,您是否反过来尝试过?

      class Quiz extends Resource
      {
          // ...
      
          public static function relatableUsers(NovaRequest $request, $query)
          {
              return $query->where('role_id', 1);
          }
      }
      
      

      【讨论】:

      • 我不是我认为我必须从相反的方式来做。谢谢!
      【解决方案3】:

      您可以在查询中使用whereIn 方法,如下所示:

      $users = User::whereIn('role_id', [1,2])->get();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-04
        • 2022-08-05
        • 2019-12-08
        • 2021-03-19
        • 2021-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多