MetaBehavior.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: NODELOG
  5. * Date: 16/7/21
  6. * Time: 上午12:35
  7. */
  8. namespace common\behaviors;
  9. use common\models\Meta;
  10. use common\traits\EntityTrait;
  11. use Yii;
  12. use yii\base\Behavior;
  13. use yii\db\ActiveRecord;
  14. class MetaBehavior extends Behavior
  15. {
  16. use EntityTrait;
  17. public function events()
  18. {
  19. return [
  20. ActiveRecord::EVENT_AFTER_INSERT => 'afterSave',
  21. ActiveRecord::EVENT_AFTER_UPDATE => 'afterSave',
  22. ActiveRecord::EVENT_AFTER_DELETE => 'afterDelete'
  23. ];
  24. }
  25. public function afterSave()
  26. {
  27. if (\Yii::$app->request->isConsoleRequest ) {
  28. return;
  29. }
  30. $model = $this->getMetaModel();
  31. if ($model->load(Yii::$app->request->post())) {
  32. $model->save();
  33. }
  34. }
  35. public function afterDelete()
  36. {
  37. $this->getMetaModel()->delete();
  38. }
  39. public function getMetaModel()
  40. {
  41. $model = $this->owner->meta;
  42. if ($model == null) {
  43. $model = new Meta([
  44. 'entity' => $this->getEntity(),
  45. 'entity_id' => $this->getEntityId()
  46. ]);
  47. }
  48. return $model;
  49. }
  50. public function getMeta()
  51. {
  52. return $this->owner->hasOne(Meta::className(), [
  53. 'entity_id' => $this->owner->primaryKey()[0]
  54. ])->where([
  55. "entity" => $this->getEntity()
  56. ]);
  57. }
  58. }