| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- <?php
- namespace common\models;
- use Yii;
- use yii\db\ActiveRecord;
- class xhBaseModel extends ActiveRecord
- {
- //添加
- public static function add($data, $json = false)
- {
- $self = get_called_class();
- $model = new $self;
- $attributes = $model->attributes;
- $fields = array_keys($attributes);
- foreach($fields as $key){
- if(isset($data[$key])){
- $model->$key = $data[$key];
- }
- }
- $model->save();
- $e = $model->getErrors();
- if(!empty($e)){
- var_dump($e);
- Yii::$app->end();
- }
- return $model->attributes;
- }
- //批量添加
- public static function batchAdd($data)
- {
- $self = get_called_class();
- $model = new $self;
- foreach($data as $attributes)
- {
- $_model = clone $model;
- $_model->attributes = $attributes;
- $_model->save();
- }
- }
-
- /**
- * 取表字段
- */
- public static function getFields()
- {
- $self = get_called_class();
- $model = new $self;
- $attributes = $model->attributes;
- return array_keys($attributes);
- }
- /**
- * 根据主键ID删除一条记录
- */
- public static function deleteById($id)
- {
- $return = self::findOne($id)->delete();
- return $return;
- }
- /**
- *根据条件删除一条或多条记录
- */
- public static function deleteByCondition($condition)
- {
- if(empty($condition))
- return 0;
- $where = array();
- $variable = array();
- foreach($condition as $key => $val){
- $where[] = $key.'=:'.$key;
- $variable[':'.$key] = $val;
- }
- $whereString = implode(' and ',$where);
- $count = self::deleteAll($whereString,$variable);
- return $count;
- }
- /**
- * 根据主键ID更新一条记录
- * @param $id
- * @param $data
- * @return array 更新成功返回status:true,失败返回status:false;更新的字段在data内(非表字段会被删除)
- */
- public static function updateById($id, $data)
- {
- $self = get_called_class();
- $model = new $self;
- $attributes = $model->attributes;
- $fields = array_keys($attributes);
- foreach($data as $key => $val){
- if(in_array($key, $fields) == false){
- unset($data[$key]);//删除不需要保存的字段
- }
- }
- $re = self::updateAll($data,'id=:id',['id' => $id]);
- if($re == 1){
- return ['status'=>true, 'data'=>$data];
- }
- return ['status'=>false, 'data'=>$data];
- }
-
- /**
- * 根据条件更新一条或多条记录
- */
- public static function updateByCondition($condition,$data)
- {
- if(empty($condition) || !is_array($condition)){
- throw new \Exception("xhBaseModel updateByCondition action's parameter 'condition' is empty or not a array!");
- }
- $where = array();
- $variable = array();
- foreach($condition as $key => $val){
- $where[] = $key.'=:'.$key;
- $variable[':'.$key] = $val;
- }
- $whereString = implode(' and ',$where);
- $count = self::updateAll($data,$whereString,$variable);
- return $count;
- }
-
- /**
- * 根据主键ID查出一条记录
- */
- public static function getById($id)
- {
- return self::find()->where(['id' => $id])->asArray()->one();
- }
- /**
- *根据条件查出一条记录
- */
- public static function getByCondition($condition)
- {
- return self::find()->where($condition)->asArray()->one();
- }
- /**
- *根据条件查出多条记录
- *
- *$instant 即时加载的对象名
- *
- */
- public static function getAllByCondition($condition, $order = null, $field = '*')
- {
- $query = self::find()->select($field)->where($condition);
- if(isset($order)){
- $query->orderBy($order);
- }
- return $query->asArray()->all();
- }
- /**
- * 根据多个主键ID查询多条记录
- */
- public static function getByIds($ids,$order=null)
- {
- $data = [];
- if(!empty($ids)){
- $query = self::find()->where(['id'=>$ids]);
- if(!empty($order)){
- $query->order($order);
- }
- $data = $query->asArray()->all();
- }
- return $data;
- }
- /**
- *根据条件查出 总数
- */
- public static function getCount($condition){
- return self::find()->where($condition)->count();
- }
- }
|