ActiveRecordHelper.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace common\util;
  3. use Yii;
  4. use yii\base\InvalidConfigException;
  5. use yii\db\ActiveRecord;
  6. trait ActiveRecordHelper
  7. {
  8. /**
  9. * @throws InvalidConfigException
  10. */
  11. public function getParams($key)
  12. {
  13. // if (Yii::$app->request->isPost) {
  14. // return Yii::$app->request->getBodyParam($key);
  15. // } else {
  16. // return Yii::$app->request->getQueryParam($key);
  17. // }
  18. $params = array_merge(Yii::$app->request->getBodyParams(), Yii::$app->request->getQueryParams());
  19. return $params[$key] ?? null;
  20. }
  21. /**
  22. * @return array
  23. * @throws InvalidConfigException
  24. */
  25. public function getAllParams(): array
  26. {
  27. // if (Yii::$app->request->isPost) {
  28. // return Yii::$app->request->getBodyParams();
  29. // } else {
  30. // return Yii::$app->request->getQueryParams();
  31. // }
  32. return array_merge(Yii::$app->request->getBodyParams(), Yii::$app->request->getQueryParams());
  33. }
  34. /**
  35. * 自动添加get或者post参数到更新属性列表里
  36. * @param ActiveRecord $model
  37. * @return void
  38. * @throws InvalidConfigException
  39. */
  40. public function setAttributeFromGetAndPost(ActiveRecord $model): void
  41. {
  42. $all = $this->getAllParams();
  43. foreach ($all as $key => $value) {
  44. if ($model->hasAttribute($key)) {
  45. $model->setAttribute($key, $value);
  46. }
  47. }
  48. }
  49. }