<?php


namespace common\util;


use Yii;
use yii\base\InvalidConfigException;
use yii\db\ActiveRecord;

trait ActiveRecordHelper
{
    /**
     * @throws InvalidConfigException
     */
    public function getParams($key)
    {
//        if (Yii::$app->request->isPost) {
//            return Yii::$app->request->getBodyParam($key);
//        } else {
//            return Yii::$app->request->getQueryParam($key);
//        }
        $params = array_merge(Yii::$app->request->getBodyParams(), Yii::$app->request->getQueryParams());
        return $params[$key] ?? null;
    }

    /**
     * @return array
     * @throws InvalidConfigException
     */
    public function getAllParams(): array
    {
//        if (Yii::$app->request->isPost) {
//            return Yii::$app->request->getBodyParams();
//        } else {
//            return Yii::$app->request->getQueryParams();
//        }
        return array_merge(Yii::$app->request->getBodyParams(), Yii::$app->request->getQueryParams());
    }

    /**
     * 自动添加get或者post参数到更新属性列表里
     * @param ActiveRecord $model
     * @return void
     * @throws InvalidConfigException
     */
    public function setAttributeFromGetAndPost(ActiveRecord $model): void
    {
        $all = $this->getAllParams();
        foreach ($all as $key => $value) {
            if ($model->hasAttribute($key)) {
                $model->setAttribute($key, $value);
            }
        }
    }
}