xhBaseModel.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <?php
  2. namespace common\models;
  3. use Yii;
  4. use yii\db\ActiveRecord;
  5. class xhBaseModel extends ActiveRecord
  6. {
  7. //添加
  8. public static function add($data, $json = false)
  9. {
  10. $self = get_called_class();
  11. $model = new $self;
  12. $attributes = $model->attributes;
  13. $fields = array_keys($attributes);
  14. foreach($fields as $key){
  15. if(isset($data[$key])){
  16. $model->$key = $data[$key];
  17. }
  18. }
  19. $model->save();
  20. $e = $model->getErrors();
  21. if(!empty($e)){
  22. var_dump($e);
  23. Yii::$app->end();
  24. }
  25. return $model->attributes;
  26. }
  27. //批量添加
  28. public static function batchAdd($data)
  29. {
  30. $self = get_called_class();
  31. $model = new $self;
  32. foreach($data as $attributes)
  33. {
  34. $_model = clone $model;
  35. $_model->attributes = $attributes;
  36. $_model->save();
  37. }
  38. }
  39. /**
  40. * 取表字段
  41. */
  42. public static function getFields()
  43. {
  44. $self = get_called_class();
  45. $model = new $self;
  46. $attributes = $model->attributes;
  47. return array_keys($attributes);
  48. }
  49. /**
  50. * 根据主键ID删除一条记录
  51. */
  52. public static function deleteById($id)
  53. {
  54. $return = self::findOne($id)->delete();
  55. return $return;
  56. }
  57. /**
  58. *根据条件删除一条或多条记录
  59. */
  60. public static function deleteByCondition($condition)
  61. {
  62. if(empty($condition))
  63. return 0;
  64. $where = array();
  65. $variable = array();
  66. foreach($condition as $key => $val){
  67. $where[] = $key.'=:'.$key;
  68. $variable[':'.$key] = $val;
  69. }
  70. $whereString = implode(' and ',$where);
  71. $count = self::deleteAll($whereString,$variable);
  72. return $count;
  73. }
  74. /**
  75. * 根据主键ID更新一条记录
  76. * @param $id
  77. * @param $data
  78. * @return array 更新成功返回status:true,失败返回status:false;更新的字段在data内(非表字段会被删除)
  79. */
  80. public static function updateById($id, $data)
  81. {
  82. $self = get_called_class();
  83. $model = new $self;
  84. $attributes = $model->attributes;
  85. $fields = array_keys($attributes);
  86. foreach($data as $key => $val){
  87. if(in_array($key, $fields) == false){
  88. unset($data[$key]);//删除不需要保存的字段
  89. }
  90. }
  91. $re = self::updateAll($data,'id=:id',['id' => $id]);
  92. if($re == 1){
  93. return ['status'=>true, 'data'=>$data];
  94. }
  95. return ['status'=>false, 'data'=>$data];
  96. }
  97. /**
  98. * 根据条件更新一条或多条记录
  99. */
  100. public static function updateByCondition($condition,$data)
  101. {
  102. if(empty($condition) || !is_array($condition)){
  103. throw new \Exception("xhBaseModel updateByCondition action's parameter 'condition' is empty or not a array!");
  104. }
  105. $where = array();
  106. $variable = array();
  107. foreach($condition as $key => $val){
  108. $where[] = $key.'=:'.$key;
  109. $variable[':'.$key] = $val;
  110. }
  111. $whereString = implode(' and ',$where);
  112. $count = self::updateAll($data,$whereString,$variable);
  113. return $count;
  114. }
  115. /**
  116. * 根据主键ID查出一条记录
  117. */
  118. public static function getById($id)
  119. {
  120. return self::find()->where(['id' => $id])->asArray()->one();
  121. }
  122. /**
  123. *根据条件查出一条记录
  124. */
  125. public static function getByCondition($condition)
  126. {
  127. return self::find()->where($condition)->asArray()->one();
  128. }
  129. /**
  130. *根据条件查出多条记录
  131. *
  132. *$instant 即时加载的对象名
  133. *
  134. */
  135. public static function getAllByCondition($condition, $order = null, $field = '*')
  136. {
  137. $query = self::find()->select($field)->where($condition);
  138. if(isset($order)){
  139. $query->orderBy($order);
  140. }
  141. return $query->asArray()->all();
  142. }
  143. /**
  144. * 根据多个主键ID查询多条记录
  145. */
  146. public static function getByIds($ids,$order=null)
  147. {
  148. $data = [];
  149. if(!empty($ids)){
  150. $query = self::find()->where(['id'=>$ids]);
  151. if(!empty($order)){
  152. $query->order($order);
  153. }
  154. $data = $query->asArray()->all();
  155. }
  156. return $data;
  157. }
  158. /**
  159. *根据条件查出 总数
  160. */
  161. public static function getCount($condition){
  162. return self::find()->where($condition)->count();
  163. }
  164. }