Laravel 筛选选定字段中的值

Laravel 筛选选定字段中的值,laravel,backpack-for-laravel,laravel-backpack,Laravel,Backpack For Laravel,Laravel Backpack,我使用的是Laravel 7+背包积垢4.1 我有两种型号Payment和PaymentMethods和PaymentCrudController $this->crud->addField([ 'label' => 'Payment Method', 'type' => 'select2', 'name' => 'payment_method_id', 'entity' => 'paymentMeth

我使用的是Laravel 7+背包积垢4.1

我有两种型号
Payment
PaymentMethods
PaymentCrudController

$this->crud->addField([
   'label'     => 'Payment Method',
   'type'      => 'select2',
   'name'      => 'payment_method_id',
   'entity'    => 'paymentMethod',
   'attribute' => 'name',
   'model'     => 'App\Models\PaymentMethod',
   'wrapperAttributes' => [
       'class' => 'form-group col-md-3',
   ],
]);
付款
模型中的关系:

public function paymentMethod()
    {
        return $this->hasOne(PaymentMethod::class, 'id', 'payment_method_id');
    }
事实上,这与预期的一样——我在选项字段中看到了
PaymentMethod
模型中的所有记录。但我需要过滤一些值。我正在尝试修改模型关系:

 public function paymentMethod()
        {
            return $this->hasOne(PaymentMethod::class, 'id', 'payment_method_id')->where('name', '!=', 'Online');
        }

但我仍然可以在“选择选项”中看到所有记录。如何筛选选择值?

将“where”放在关系中毫无意义,在我看来,关系应该保持原样,反映表的关系

对于您的套装,您可以使用“”作为“选择2”字段:

  $this->crud->addField([
       'label'     => 'Payment Method',
       'type'      => 'select2',
       'name'      => 'payment_method_id',
       'entity'    => 'paymentMethod',
       'attribute' => 'name',
       'model'     => 'App\Models\PaymentMethod',
       'options' => (function ($query) {
        return $query->where('name', '!=', 'Online')->get();}),
       'wrapperAttributes' => [
           'class' => 'form-group col-md-3',
       ],
    ]);
还有别的。。。对于您的客户:应该是:

public function paymentMethod()
    {
        return $this->hasOne(PaymentMethod::class,'payment_method_id');
    }

第二个参数应该是外键…

它不是只有一个关系吗?所以对于一个支付模型实例,只有一个paymentMethod,对吗。您在“选择选项”中的选项显示得如何?仅此而已!谢谢!