过滤 select 个字段中的值
Filter values in select fields
我正在使用 Laravel 7 + Backpack CRUD 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',
],
]);
Payment
模型中的关系:
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');
}
但我仍然在 select 选项中看到所有记录。如何筛选 select 个值?
将'where'放在关系中是没有意义的,在我看来,关系应该保持原样,反映表的关系....
根据您的情况,您可以在 'select2' 字段中使用“options”:
$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',
],
]);
其他的……给你的one to many relation:它应该是:
public function paymentMethod()
{
return $this->hasOne(PaymentMethod::class,'payment_method_id');
}
第二个参数应该是外键...
我正在使用 Laravel 7 + Backpack CRUD 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',
],
]);
Payment
模型中的关系:
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');
}
但我仍然在 select 选项中看到所有记录。如何筛选 select 个值?
将'where'放在关系中是没有意义的,在我看来,关系应该保持原样,反映表的关系....
根据您的情况,您可以在 'select2' 字段中使用“options”:
$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',
],
]);
其他的……给你的one to many relation:它应该是:
public function paymentMethod()
{
return $this->hasOne(PaymentMethod::class,'payment_method_id');
}
第二个参数应该是外键...