save() 공개 메소드

保存当前数据对象
public save ( array $data = [], array $where = [], string $sequence = null ) : integer | false
$data array 数据
$where array 更新条件
$sequence string 自增序列名
리턴 integer | false
예제 #1
0
 public function add()
 {
     $this->startTrans();
     //>>1.检查用户提交过来的数据如果为默认值, 将其他的默认去掉
     if (isset($this->data['is_default'])) {
         $result = $this->where(array('member_id' => UID))->setField('is_default', 0);
         if ($result === false) {
             $this->rollback();
             return false;
         }
     }
     if (!empty($this->data['id'])) {
         $id = $this->data['id'];
         //>>1.更新
         $result = parent::save();
         //使用this->data中的数据进行更新
         if ($result === false) {
             $this->rollback();
             return false;
         }
     } else {
         //>>2.保存
         $id = parent::add();
         //
         if ($id === false) {
             $this->rollback();
             return false;
         }
     }
     $this->commit();
     //>>3.根据id再从数据库中获取一行数据
     $row = $this->find($id);
     //>>4.返回这一行数据
     return $row;
 }
예제 #2
0
 public function login()
 {
     $username = $this->data['username'];
     $password = $this->data['password'];
     //>>1.判断用户名是否存在
     $row = $this->field('id,username,password,salt,status')->where(array('status' => array('gt', -1)))->getByUsername($username);
     if (empty($row)) {
         $this->error = '该用户不存在!';
         return false;
     }
     if ($row['status'] === '0') {
         $this->error = '该用户未激活或者被锁定';
         return false;
     }
     //>>2.判断密码是否和数据库中的密码一致
     if ($row['password'] == md5(md5($password) . $row['salt'])) {
         //密码对比上之后才登陆成功
         //将登陆成功后的IP和时间更新到数据库表中
         parent::save(array('last_login_time' => NOW_TIME, 'last_login_ip' => ip2long(get_client_ip()), 'id' => $row['id']));
         return $row;
     } else {
         $this->error = '密码不正确!';
         return false;
     }
 }
예제 #3
0
 /**
  * 修改数据
  */
 public function save()
 {
     if (isset($this->data['is_default'])) {
         $this->where(array('member_id' => UID));
         parent::save(array('is_default' => 0));
     }
     return parent::save();
 }
예제 #4
0
 public function changeStatus($id, $status)
 {
     $data = array('id' => array('in', $id), 'status' => $status);
     if ($status == -1) {
         $data['name'] = array('exp', 'concat(name,"_del")');
     }
     return parent::save($data);
 }
예제 #5
0
 /**
  * 改变id修改其状态为status
  * @param $id
  * @param $status   默认值为-1表示删除
  */
 public function changeStatus($id, $status = -1)
 {
     $data = array('id' => array('in', $id), 'status' => $status);
     if ($status == -1) {
         $data['name'] = array('exp', "concat(name,'_del')");
         //update supplier set name = concat(name,'_del'),status = -1    where id in (1,2,3);
     }
     return parent::save($data);
 }
예제 #6
0
 public function changeStatus($id, $status = -1)
 {
     $data = array('id' => array('in', $id), 'status' => $status);
     if ($status == -1) {
         //status值为-1时 表示删除 给名字加上删除标识
         $data['name'] = array('exp', "concat(name,'_del')");
     }
     return parent::save($data);
 }
예제 #7
0
 public function changeStatus($id, $status = -1)
 {
     $data = array('id' => array('in', $id), 'status' => $status);
     if ($status == -1) {
         //如果传入的status值为-1 那么就将status的值改为-1 并且将id对应的name的值后面加一个_del
         $data['name'] = array('exp', "concat(name,'_del')");
     }
     return parent::save($data);
 }
예제 #8
0
 /**
  * 根据id更改供货商状态
  * @param $id   数据ID
  * @param int $status 数据状态,默认值为-1(移除)
  * @return bool
  */
 public function changeStatus($id, $status = -1)
 {
     $data = array('id' => array('in', $id), 'status' => $status);
     //如果状态改为-1(移除),就将供货商的名称后面加一个'_del'的后缀
     if ($status == -1) {
         $data['name'] = array('exp', "concat(name,'_del')");
     }
     return parent::save($data);
 }
예제 #9
0
 public function changeStatus($id, $status)
 {
     $data = ['status' => $status, 'id' => array('in', $id)];
     //根据status的值判断是删除还是修改
     if ($status == -1) {
         $data['name'] = array('exp', 'concat(name,"_del")');
     }
     return parent::save($data);
 }
예제 #10
0
 public function statusChange($id, $status = -1)
 {
     //准备要修改的数据
     $data = array('id' => array('in', $id), 'status' => $status);
     //状态值为-1时,为名字加上后缀,防止添加时名字重复验证不同过
     if ($status == -1) {
         $data['name'] = array('exp', "concat(name,'_del')");
     }
     parent::save($data);
 }
예제 #11
0
 /**
  * @param $id
  * @param int $status
  * @return bool
  * 商品移除 和 显示状态更改
  */
 public function changeStatus($id, $status = -1)
 {
     //获取id和status的值
     $data = array('id' => array('in', $id), 'status' => $status);
     if ($status == -1) {
         //当status等于-1表示移除商品并且修改name的值
         $data['name'] = array('exp', "concat(name,'_del')");
     }
     return parent::save($data);
 }
예제 #12
0
 public function changestatus($id, $status)
 {
     $data = array('status' => $status);
     $data['id'] = array('in', $id);
     if ($status == -1) {
         //表示的是此时是放入回收站,给供货商的名字加一个后缀
         $data['name'] = array('exp', "concat(name,'_del')");
     }
     return parent::save($data);
 }
예제 #13
0
 public function changeStatus($id, $status = -1)
 {
     $data = array('status' => $status, 'id' => array("in", $id));
     //如果状态值为-1 则是删除状态,由于验证字段名是从数据库中查询所以添加一个删除标示,
     if ($status == -1) {
         $data["name"] = array("exp", "concat(name,'_del')");
         //exp 表示指定后面的参数是一个表达式,
     }
     return parent::save($data);
 }
예제 #14
0
 /**
  * 修改状态
  * @param $id
  * @param $status
  * @return bool
  */
 public function changeStatus($id, $status)
 {
     $data = array('id' => array('in', $id), 'status' => $status);
     //用in可以处理多项修改
     //status为-1为删除,同时改变name的值
     if ($status == -1) {
         $data['name'] = array('exp', "concat(name,'_del')");
     }
     return parent::save($data);
 }
예제 #15
0
 /**
  * 通过id修改修改status的值
  * 是伪删除
  * @param $id
  * @param $status
  * @return bool
  */
 public function changeStatus($id, $status)
 {
     $data = array('status' => $status);
     if ($status == -1) {
         //表示删除,将原来的name原始数据修改成,xxx_del
         $data['name'] = array('exp', "concat(name,'_del')");
     }
     $this->where(array('id' => array('in', $id)));
     return parent::save($data);
     //UPDATE supplier SET  STATUS = -1  ,  NAME = CONCAT(NAME,'_del' ) WHERE id = 6;
 }
예제 #16
0
 /**
  * 根据id将status修改为传递过来的status的值
  * @param $id
  * @param $status
  * @return bool
  */
 public function changeStatus($id, $status)
 {
     $data = array('status' => $status);
     if ($status == -1) {
         //表示删除, 将name原始值修改为 xxxx_del
         $data['name'] = array('exp', "concat(name,'_del' )");
         //>>SQL:name = concat(name,'_del' )
     }
     //>>设置更新条件
     $this->where(array('id' => array('in', $id)));
     return parent::save($data);
     //update supplier set  status = -1  ,  name = concat(name,'_del' ) where id = 6;
 }
예제 #17
0
 public function changeStatus($id, $status = -1)
 {
     $data = array('status' => $status);
     if (is_array($id)) {
         $data['id'] = array('in', $id);
     } else {
         $data['id'] = $id;
     }
     if ($status == -1) {
         $data['name'] = array('exp', "concat(name,'_del')");
     }
     return parent::save($data);
 }
예제 #18
0
 /**
  * 改变status的状态
  */
 public function changeStatus($id, $status)
 {
     //构建需要修改的数组
     $arr = array('status' => $status);
     //如果状态为-1(及移除操作的时候)同时要修改name字段,为name字段加上_del
     if ($status == -1) {
         $arr['name'] = array('exp', "CONCAT(name,'_del')");
         //exp这个地方只支持小写,大写没有效果
     }
     //返回结果
     $this->where(array('id' => array('in', $id)));
     return parent::save($arr);
 }
예제 #19
0
 public function changStatus($id, $status)
 {
     //>通过点击来来变换status的值1或者0 就要等到他当前的status
     $data['status'] = $status;
     //删除用户是在用户名后面加上"_del"
     if ($status == -1) {
         //.....exp  支持sql的表达式....
         $data['name'] = array('exp', "concat(name,'_del')");
     }
     //使用id删除数据
     $this->where(array('id' => array('in', $id), 'status<>-1'));
     //因为子类中覆盖了save方法,所以要调用父类中的;
     $result = parent::save($data);
     return $result;
 }
예제 #20
0
 /**
  *根据id修改其状态stautus,默认值-1表示删除
  */
 public function changeStatus($id, $status = -1)
 {
     /**
      * if($id是数组){
      *'id'=>array('in',array(1,2,3))
      * }else{
      *'id'=>array('in',"1")
      * }
      */
     $data = array('id' => array('in', $id), 'status' => $status);
     if ($status == -1) {
         //update supplier set name = concat(name,'_del')    where id = in(1,2);
         $data['name'] = array('exp', "concat(name,'_del')");
     }
     return parent::save($data);
 }
예제 #21
0
 /**
  * 验证验证码
  * @param string $mobile 手机号
  * @param string $code 验证码
  * @return boolean 验证
  */
 public function verify($mobile, $code)
 {
     $this->where(array('mobile' => $mobile))->order('id desc');
     if (!($data = parent::find())) {
         $this->error = '验证码错误';
         return false;
     }
     if ($data['code'] != $code) {
         $this->error = '验证码错误';
         return false;
     }
     if ($data['status'] != '0') {
         $this->error = '验证码已过期';
         return false;
     }
     return parent::save($this->create($data));
 }
예제 #22
0
 /**
  * 将收货地址数据添加到数据库中 或者修改数据
  * @return mixed
  */
 public function add()
 {
     $this->data['member_id'] = UID;
     //判断是添加还是修改
     if ($id = $this->data['id']) {
         //修改返回id
         $rst = parent::save();
         if ($rst !== false) {
             return $id;
         } else {
             return false;
         }
     }
     //如果添加的为默认地址,将数据库中修改为0
     if ($this->data['is_default']) {
         $this->where('is_default=1');
         parent::save(array('is_default' => 0));
     }
     return parent::add();
 }
예제 #23
0
 /**
  * 激活用户
  * @param $id
  * @param $key
  * @return bool
  */
 public function fire($id, $key)
 {
     $email = $this->getFieldById($id, 'email');
     if ($key === md5($email)) {
         $rst = parent::save(array('id' => $id, 'status' => 1));
         if ($rst !== false) {
             return $rst;
         }
     }
     return false;
 }
 /**
  * 添加订单
  * @param mixed|string $requestData
  * @return bool|mixed
  */
 public function add($requestData)
 {
     $this->startTrans();
     //为order_info表准备数据
     $orderInfo = array();
     $orderInfo['member_id'] = UID;
     //>>收货人信息
     $address_id = $requestData['address_id'];
     $addressModel = D('Address');
     $address = $addressModel->field('id,member_id,is_default,status', true)->find($address_id);
     $orderInfo = array_merge($orderInfo, $address);
     //>>送货方式
     $delivery_id = $requestData['delivery'];
     $deliveryModel = D('Delivery');
     $delivery = $deliveryModel->field('id as delivery_id,name as delivery_name,price as delivery_price')->find($delivery_id);
     $orderInfo = array_merge($orderInfo, $delivery);
     $orderInfo['delivery_time'] = $requestData['delivery_time'];
     //>>支付方式
     $pay_type_id = $requestData['pay'];
     $payTypeModel = D('PayType');
     $pay_type = $payTypeModel->field('id as pay_type_id,name as pay_type_name')->find($pay_type_id);
     $orderInfo = array_merge($orderInfo, $pay_type);
     //>>下单时间
     $orderInfo['inputtime'] = NOW_TIME;
     //购物车中信息
     $shoppingCarModel = D('ShoppingCar');
     $shopping_car = $shoppingCarModel->getList();
     //>>计算购物明细金额及订单总金额
     $goods_total_price = 0;
     //购物明细金额
     foreach ($shopping_car as $item) {
         $goods_total_price += $item['num'] * $item['price'];
     }
     $orderInfo['total_price'] = $goods_total_price + $delivery['delivery_price'];
     //保存订单信息到数据库中
     $id = parent::add($orderInfo);
     if ($id === false) {
         $this->rollback();
         return false;
     }
     //将购物车中的信息保存到购物明细表中
     foreach ($shopping_car as &$item) {
         unset($item['id']);
         unset($item['member_id']);
         $item['order_info_id'] = $id;
     }
     unset($item);
     $orderInfoItemModel = M('OrderInfoItem');
     $rst = $orderInfoItemModel->addAll($shopping_car);
     if ($rst === false) {
         $this->rollback();
         $this->error = '保存订单明细失败';
         return false;
     }
     //发票信息
     $invoiceModel = M('Invoice');
     $invoice = array();
     //发票数据
     //>>发票名字
     if ($requestData['type'] == 1) {
         $userinfo = login();
         $invoice_name = $userinfo['username'];
     } else {
         $invoice_name = $requestData['invoice_name'];
     }
     //>>发票相关信息
     $invoice_content = '';
     if ($requestData['content'] == '明细') {
         foreach ($shopping_car as $item) {
             $invoice_content .= $item['name'] . ' ' . $item['num'] . ' ' . $item['price'] . ' ' . $item['num'] * $item['price'] . "\r\n";
         }
     } else {
         $invoice_content = $requestData['content'];
     }
     $invoice['name'] = $invoice_name;
     $invoice['content'] = $invoice_content;
     $invoice['order_info_id'] = $id;
     $invoice['total_price'] = $goods_total_price;
     $invoice_id = $invoiceModel->add($invoice);
     if ($invoice_id === false) {
         $this->rollback();
         $this->error = '保存发票失败';
         return false;
     }
     //将订单号和发票id更新到订单表中
     $sn = date('Ymd') . str_pad($id, 11, '0', STR_PAD_LEFT);
     $rst = parent::save(array('sn' => $sn, 'invoice_id' => $invoice_id, 'id' => $id));
     if ($rst === false) {
         $this->rollback();
         $this->error = '更新订单号和发票ID失败';
         return false;
     }
     $this->commit();
     return $id;
 }
예제 #25
0
 /**
  * 改变数据的status状态字段的方法(伪删除功能也是修改status字段,所以也调用此方法)
  * @param $id 传入的数据的id字段
  * @param int $status 传入的数据的status字段
  * @return bool
  */
 public function changeStatus($id, $status = -1)
 {
     //>>将接收到数据保存到数组中($id可能是数组或单独数字,所以作为where条件时使用in而不是=,如where id in (1,2,3)或where id in (1)
     $data = array('id' => array('in', $id), 'status' => $status);
     //>>status字段值为-1表示数据用户希望删除该数据(伪删除功能),为了防止与用户新添加数据重名,修改要被"删除"数据的name值,在其原来name后面添加_del
     if ($status == -1) {
         $data['name'] = array('exp', "concat(name,'_del')");
     }
     //>>调用父类修改数据方法对数据进行修改,并返回结果
     return parent::save($data);
 }
예제 #26
0
 /**
  * 修改文章
  * @param $article
  */
 public function modifyArticle($article)
 {
     $Article = new Model('article');
     return $Article->save($article);
 }
예제 #27
0
 /**
  * 逻辑删除分类
  * 在name后面拼接_del并且将状态改为-1
  * 由于前面重写了save方法,所以保存的时候应当调用父类的save方法
  * @param int $id
  * @return int|false
  */
 public function delete2($id)
 {
     //1.获取原始数据
     $this->field('lft,rght')->where(array('id' => $id))->find();
     //准备修改的数据
     $data = array('status' => -1, 'name' => array('exp', 'concat(name,"_del")'));
     //update goods_category set status=-1,name=concat(name,'_del') where lft>=2 and rght<=9
     //准备用于修改的条件
     $cond = array('lft' => array('egt', $this->data['lft']), 'rght' => array('elt', $this->data['rght']));
     $this->where($cond);
     return parent::save($data);
 }
예제 #28
0
 /**
  *  验证登录
  * @return bool | array
  */
 public function checkLogin()
 {
     $username = $this->data['username'];
     $password = $this->data['password'];
     if (empty($username)) {
         $this->error = '请输入用户名!';
         return false;
     }
     if (empty($password)) {
         $this->error = '请输入密码!';
         return false;
     }
     //更具当前输入的用户名,查询数据库中对应的数据
     $user_info = $this->field('id,username,password,salt,status')->where(array('status' => array('gt', -1)))->getByUsername($username);
     if (empty($user_info)) {
         $this->error = '用户名不存在!';
         return false;
     }
     if ($user_info['status'] == 0) {
         $this->error = '您的账号还未激活,或被锁定.请注意查收激活邮件!';
         return false;
     }
     //对比密码.如果对比成功,将当前用户对应数据的最后登录时间和最后登录IP字段的值修改
     if (md5(md5($password) . $user_info['salt']) == $user_info['password']) {
         $result = parent::save(array('last_login_time' => NOW_TIME, 'last_login_ip' => ip2long(get_client_ip()), 'id' => $user_info['id']));
         if ($result === false) {
             $this->error = '系统繁忙,请稍后再试!';
             return false;
         }
         return $user_info;
     } else {
         $this->error = '密码不正确!';
         return false;
     }
 }
예제 #29
0
 /**
  * 保存数据
  * @access public
  * @param mixed $data 数据
  * @param array $options 表达式
  * @return boolean
  */
 public function save($data = '', $options = array())
 {
     if (!empty($this->options['link'])) {
         echo 'rl save</br>';
         //1、对Data进行过滤,找到属于原始数据项中的data
         //1.1、获取当前对象自己的字段名
         $currentDBFields = $this->getDbFields();
         //1.2、检查当前有没有设置映射,有的话先还原
         //todo 验证还原的可靠性。。
         if (!empty($this->_map)) {
             foreach ($this->_map as $key => $val) {
                 if (in_array($key, $currentDBFields)) {
                     $data[$key] = $data[$val];
                     unset($data[$val]);
                 }
             }
         }
         //1.3 定义原始数据orgData,从Data中筛出符合orgData的数据
         $orgData;
         foreach ($data as $key => $value) {
             if (in_array($key, $currentDBFields)) {
                 $orgData[$key] = $data[$key];
             }
         }
         //1.3 保存orgData
         parent::save($orgData, $options);
         return $this->opRelation('SAVE', $data, $options['link']);
     } else {
         echo 'normal save</br>';
         return parent::save($data, $options);
     }
 }
예제 #30
0
 public function changeStatus($id, $status = -1)
 {
     if ($status == -1) {
         // $id可能是具体的值 也可能是数组(批量删除)
         return parent::save(array('status' => $status, 'id' => array('in', $id), 'name' => array('exp', "concat(`name`,'_del')")));
     }
     return parent::save(array('status' => $status, 'id' => array('in', $id)));
 }