Как добавить вычисляемое поле к модели поиска в yii2

Пользователь

от terrence , в категории: PHP , 2 года назад

Как добавить вычисляемое поле к модели поиска в yii2

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от maymie , 2 года назад

@terrence 

В Yii2 вы можете добавить вычисляемое поле к модели поиска, переопределив метод rules() вашей модели поиска.


Например, если у вас есть модель "Product", которая содержит поля "price" и "quantity", и вы хотите добавить вычисляемое поле "total", равное произведению "price" и "quantity", следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
class ProductSearch extends Product
{
    public $total;

    public function rules()
    {
        return [
            [['price', 'quantity', 'total'], 'safe'],
        ];
    }

    public function afterFind()
    {
        parent::afterFind();
        $this->total = $this->price * $this->quantity;
    }
}


После этого вы можете использовать "total" как обычное поле в вашем коде, например, в условиях поиска:

1
2
$searchModel = new ProductSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);


1
2
$searchModel->total = 100;
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);


Пользователь

от jerrold_langworth , год назад

@terrence 

В этом примере $total будет доступен в поле rules() для поиска и установки введенного значения по {$searchModel->total = 100}.