第一篇:cakePHP常用数据操作方法总结
CakePHP常用数据操作方法总结
0.测试相关信息
1.数据表(1)zmkm_tests Id int(11)primary key Name char(10)Password char(32)Type tinyint(2)(2)zmkm_relations Id int(11)primary key Test_id int(11)Content text 2.Model:Test,Relation 3.Controller:test,relation 一.查询
1.find($type,$params)I.$params,查询的限制条件,格式如下
$params = array('conditions' => array('SQL中的where条件'), 'fields' => array('查询字段'), 'order' => array('排序字段,SQL中的order by 条件'), 'group' => array('分组字段,SQL中的group by 条件'), 'limit' => 'm,n',// 查询记录条数,SQL中limit 'page' =>'n' // 还有recursive和callbacks等不常用的参数,略过);
II.$type,查询的类型
(1)$type = 'first',find的默认参数,查找符合条件的第一条数据.示例1: 查找数据表中第一条记录
$lists = $this->Test->find();SQL:SELECT `Test`.`Id`, `Test`.`name`, `Test`.`password`, `Test`.`type` FROM `zmkm_tests` AS `Test`
WHERE 1 = 1
LIMIT 1
结果: $lists = array([“Test”]=>
array(“Id”=>“1”
“name”=>“37892533”
“password”=>“2f441e566f1bbb7d1faaf32e85035048”
“type”=>“3”))示例2:查找一条type=1的记录
$lists = $this->Test->find('first',array('conditions'=>array('Test.type' => '1')));SQL:SELECT `Test`.`Id`, `Test`.`name`, `Test`.`password`, `Test`.`type` FROM `zmkm_tests` AS `Test`
WHERE `Test`.`type` = 1
LIMIT 1
结果:$lists = array(“Test”=>
array(“Id”=>“3”
“name”=>“37892533”
“password”=>“5997124ee980322f8a62a758dda4deee”
“type”=>“1”))
(2)$type = 'all',查找所有符合条件的记录 示例:查找所有type为[1,2,3]的记录
$lists = $this->Test->find('all',array('conditions' => array('Test.type' => array('1','2','3'))));SQL:SELECT `Test`.`Id`, `Test`.`name`, `Test`.`password`, `Test`.`type` FROM `zmkm_tests` AS `Test`
WHERE `Test`.`type` IN(1, 2, 3)
结果: $lists = array(0 => array('Test'=>array('id'=>1,'name'=>.....)), 1=>array(.....)...);
(3)$type = 'list',返回一个索引数组,key第一列字段,若不指定fields,则value为第二列的字段
示例:查找 10 $condition = array('conditions'=>array('Test.id Between ? And ? ' => array(10,20)), 'order' => 'Test.type desc');$lists = $this->Test->find('list',$condition);SQL:SELECT `Test`.`id`, `Test`.`name` FROM `zmkm_tests` AS `Test` WHERE `Test`.`id` Between 10 And 20 ORDER BY `Test`.`type` DESC 结果: $lists = array('12' => '47192536' , '10'=>'68192536' ,.....); (4)$type = 'count' , 计数,返回一个整数 示例:查找type!=(1,2)的记录条数 $con['conditions'] = array('not'=>array('Test.type' =>array(1,2)));$num = $this->Test->find('count',$con);SQL:SELECT COUNT(*)AS `count` FROM `zmkm_tests` AS `Test` WHERE NOT(`Test`.`type` IN(1, 2)) 结果: int(14)(5)$type = 'neighbors',查询符合条件的记录的前后两条记录 示例:查找id=33 且满足 type<3 的前后两条记录 $condition = array('field' => 'id',// *(必须 筛选字段) 'value' => '33', // *(必须 field的值) 'conditions' => array('type < ' => '3'),'fields'=> 'id,name,type', // *(必须 查找字段)); $lists = $this->Test->find('neighbors',$condition);SQL:执行两条SQL: Query: SELECT `Test`.`id`, `Test`.`name`, `Test`.`type` FROM `zmkm_tests` AS `Test` WHERE `type` < 3 AND `Test`.`id` < '33' ORDER BY `Test`.`id` DESC LIMIT 1 Query: SELECT `Test`.`id`, `Test`.`name`, `Test`.`type` FROM `zmkm_tests` AS `Test` WHERE `type` < 3 AND `Test`.`id` > '33' ORDER BY `Test`.`id` ASC LIMIT 1 结果: array(2){ “prev”=> array(“Test”=>rray(“id”=>“32”,“name”=>“44392536”,“type”=>“2”)) “next”=> array(“Test”=>array(“id”=>“39”,“name”=>“14292536”,“type”=>“1”))) 2.findByField($params):通过字段查找记录,只返回一条记录,函数名需要用驼峰式书写 示例1:通过数据表中的id查找 $lists = $this->Test->findById('3');SQL:SELECT `Test`.`Id`, `Test`.`name`, `Test`.`password`, `Test`.`type` FROM `zmkm_tests` AS `Test` WHERE `Test`.`id` ='3' LIMIT 1 结果:略 示例2:通过数据表中的type查找 $lists = $this->Test->findByType(array('3','5','7')); SQL:SELECT `Test`.`Id`, `Test`.`name`, `Test`.`password`, `Test`.`type` FROM `zmkm_tests` AS `Test` WHERE `Test`.`type` IN('3', '5', '7')LIMIT 1 结果:略 注:对于数据表中类似“user_status”的字段,方法名为findByUserStatus()3.Field($field,$condition),查找一个字段,函数返回字段值 示例:查找id=34的password $password = $this->Test->field('password',array('Test.id'=>'34'));SQL:SELECT `Test`.`password` FROM `zmkm_tests` AS `Test` WHERE `Test`.`id` = '34' LIMIT 1 结果: string(32)“2f441e566f1bbb7d1faaf32e85035048” 二.添加数据 1.save($data),插入一条记录,返回以model名为key值的$data数组(1).$data中无数据表的主键对应的字段值,则插入一条新纪录 示例:插入一条记录 $data = array('name' => 'zhongsou','passowrd' => md5(time()),'type' => rand(0,9));$this->Test->save($data);$lastInsertId = $this->Test->id; // 插入的一条记录的id SQL: INSERT INTO `zmkm_tests`(`name`, `password`, `type`)VALUES('zhongsou', '0674ab9bda247f85a5e4aa49ecb73b38', 9) 注:如果$data中存在数据表中没有的字段,则插入时忽略(2).saveAll($data),插入单个模型的多条记录,或者是该模型的关联记录 A.向同一个model插入多条记录,在cakePHP手册中介绍有误,$data数组的格式应该如下: $data = array('0' => array('name' => 'abc' , 'password' => 'b2c'), '1' => array('name' => '123' , 'password' => 'p2p'));或者: $data = array('0' => array('Test' =>array('name' => 'abc' , 'password' => 'b2c')), '1' => array('Test' => array('name' => '123' , 'password' => 'p2p')));SQL:执行多条insert语句 B.插入关联记录,新建关联表M_relation,test_id为外键,关联M_test(id),关联关系为一对一(hasOne),关联关系需要在model中定义,$data数据格式 $data = array('Relation' => array('test_id' => 3020,'content' => 'www.xiexiebang.comMIT (3).$data中有数据表的主键对应的字段值,则修改该记录的相应字段值 $data['Test'] = array('id' => '78','name' => 'zhongsou','password' => md5(time()),'type' => rand(0,9));$this->Test->save($data);$updataId = $this->Test->id; // 修改的记录的id SQL:执行两条SQL,进行插入和更新的判断 SELECT COUNT(*)AS `count` FROM `zmkm_tests` AS `Test` WHERE `Test`.`id` = '78' UPDATE `zmkm_tests` SET `name` = 'zhongsou', `password` = '2816c19a87b69d758799054dc8b4cc2e', `type` = 9 WHERE `zmkm_tests`.`id` = '78' 三.修改 1.updateAll($data,$condition),更改所有符合条件的记录 示例:修改name字段 $data = array('name' => “'souhu'”);$condition = array('Test.name' => 'zhongsou');$result = $this->Test->updateAll($data,$condition);SQL:UPDATE `zmkm_tests` AS `Test` SET `Test`.`name` = 'souhu' WHERE 'Test'.`name` = 'zhongsou' 2.saveField('field',$value),修改一个字段值,需要先指定id 示例:修改id=89 的name $this->Test->id = 89;$this->Test->saveField('name','other');SQL:UPDATE `zmkm_tests` SET `name` = 'other' WHERE `zmkm_tests`.`id` = 89 四.删除 1.delete(),删除一条记录,需要先指定id,返回boolean 示例:删除id=105的记录 $this->Test->id = '106';$result = $this->Test->delete();SQL: SELECT COUNT(*)AS `count` FROM `zmkm_tests` AS `Test` WHERE `Test`.`id` = '106' DELETE `Test` FROM `zmkm_tests` AS `Test` WHERE `Test`.`id` = '106' 2.deleteAll($condition),删除多条记录,$condition为删除条件 示例:删除id>100 & type!= [1,2,3] 的记录 $condition = array('id >' => 100, 'not' => array('type'=>array('1','2','3')));$this->Test->deleteAll($condition);SQL: 分成两条SQL执行的 SELECT `Test`.`id` FROM `zmkm_tests` AS `Test` WHERE `id` > 100 AND NOT(type IN(1, 2, 3))DELETE `Test` FROM `zmkm_tests` AS `Test` WHERE `Test`.`id` IN('102', '103', '104') 附:若把cakePHP的debug设为2依然无法在页面上打印SQL语句,则可以通过调用如下方法: /** * 获取SQL执行的日志 * return array */ function printSQL(){ $sources = ConnectionManager::sourceList();$logs = array();foreach($sources as $source){ $db =& ConnectionManager::getDataSource($source); if(!$db->isInterfaceSupported('getLog'))continue; $logs[$source] = $db->getLog();} return $logs;} 利用“电子口岸”海关数据 进行出口退(免)税明细申报操作指引 一、下载海关报关单已结关信息 1.进入电子口岸网站,点击“出口结关报关单”打开结关报关单下载介面 2.选择下载报关单范围(条件) 3.点击“查询”,系统会显示符合条件的查询结果 4.输入文件保存路径,点击“下载”将报关单信息下载到本地。 二、申报系统读入报关单数据及进行数据录入相关操作(以生产企业为例,外贸企业的操作方法基本一样) (一)设置申报系统电子口岸卡信息 通过申报系统“系统维护→系统配置→系统参数设置与修改”,选择“功能配置I”,在“电子口岸卡信息(电子口岸数据应用)”项下输入IC卡号、IC卡密码,点击“确定”完成电子口岸卡信息的设置。 (二)读入电子口岸出口报关单数据 通过申报系统“基础数据采集→外部数据采集→出口报关单数据查询与读入”,进入操作界面后,点击“数据读入”,选择从电子口岸下载的报关单信息压缩文件进行读入操作。 (三)汇率及贸易性质配置 1.出口商品汇率配置 通过申报系统“基础数据采集→外部数据采集→出口商品汇率配置”,进入操作界面后,按币种增加当月出口商品对应的汇率。 2.海关贸易性质配置 通过申报系统“基础数据采集→外部数据采集→海关贸易性质配置”,进入操作界面后,按贸易性质增加对应的关联业务表。 (四)出口报关单数据确认 通过申报系统“基础数据采集→外部数据采集→出口报关单数据修改与确认”,进入操作界面后,先在左边的索引窗口中单勾选对应的报关单号,然后可以同“数据确认”或“批量处理”功能对勾选的报关单进行确认操作。报关单数据确认后,相关的电子信息将自动转入到对应的关联业务表中。若在数据确认后,发现勾选错报关单的,可以通过“数据恢复”功能将对应的报关单恢复为未确认状态,系统会自动删除关联业务表中对应的明细记录。 (五)补充出口明细申报数据指标 完成数据确认操作的,相关的出口明细记录自动转入到对应的关联业务表中,如关联业务表为“出口货物明细申报表”。 通过申报系统“基础数据采集→出口货物明细劳务录入→出口货物明细申报录入”,进入操作界面后,逐条记录进行修改,补充录入对应的出口发票号,并根据实际情况录入“业务类型代码”指标。 三、注意事项 (一)读入海关数据前,必须先完成电子口岸卡信息的设置,将电子口岸读卡器连接安装了出口退税申报系统的计算机,并插入电子口岸操作员卡。 (二)进行数据确认前,必须先完成出口商品汇率配置和贸易性质配置。 (三)数据确认后,需在出口货物明细申报录入操作逐条记录修改录入对应的出口发票号码,并根据实际情况录入“业务类型代码”指标。 (四)若读入下载的出口报关单数据时,系统出现海关数据出错的提示,企业可以在电子口岸“出口结关报关单”操作界面中,缩小查询范围并重新下载关单信息后,再进行数据读入的操作。 Q2V8程序计算器输入数据操作方法(1); 连续交点平曲线与竖曲线三维坐标正反算步骤; 进入 1 菜单 按 MENU2 进入 列表模式 按 SHIFTSET UP 设置串列文件(List File;File 1--6) 按F1设置(输入串列文件 号码;1--6 中的一个) 清除当前选定串列的数据; 按 MENU1进入RUNMAT模式 按 SHIFTPRGM调出程序功能菜单 清除命令; F6F1F3回车(清除了当前串列的全部数据) (1)平曲线 按 MENU2进入 列表模式(输入平曲线数据) List 1List2List3List4List5List6List7(起点桩号)(起点X坐标)(起点Y坐标)(入口缓曲参数)(圆曲半径)(出口缓曲参数)(交点转)(不输入)(交点X坐标)(交点Y坐标)(入口缓曲参数)(圆曲半径)(出口缓曲参数)(交点转角) .....................(不输入)(终点X坐标)(终点Y坐标) 按 MENU9进入选择执行 Q2V8程序界面回车 输入1(只计算平曲线数据)XY(1)/H(2)/XYH(3)=? 显示出;平曲线总的交点个数(不包含起终点)hor-total JD num= 输入0(重新计算平曲线数据)new(0)/old(≠0)hor-JD data=? 显示出;输入平曲线 起点的交点号 hor-curve start JD num=? 输入0(要计算的起点的交点号)(机器开始计算等待.........) 查看计算的结果按 MENU2进入 列表模式(计算按结果如下JD1---JDn)List 1List2List3List4List5List6List7 (起点桩号)(起点X坐标)(起点Y坐标)(入口缓曲参数)(圆曲半径)(出口缓曲参数)(交点转角)(交点桩号)(交点X坐标)(交点Y坐标)(入口缓曲参数)(圆曲半径)(出口缓曲参数)(交点转角) .....................(终点X坐标)(终点Y坐标) 查看转角值(度分秒)也就是(弧度制变 角度制); 按OPTNF6F2F5 现货操作方法总结 其实农产品果蔬现货,这个新的金融交易品种是比较好做的。但是在实际操作中大家出现了一些偏差,导致有的朋友操作不是很理想,所以本人非常替大家着急和担心,在这里,我把大家遇到的问题和解决的办法做一个补充,写出来希望对大家以后的操作有帮助。只有你们赚到了钱,我们客服中心才有好处,也就是我一直所说的共赢,如果你们亏钱,而客服中心赚钱,哪么这个合作就很难做到长久。所以,咱们是一条船上的人,我比你们更想你们赚到钱。 下面我就谈如何操作吧,首先,这个是保证金制度,保证金的比例是20%,也就是你1万块钱是当5万在用,盈利的时候是按5万来计算的,亏损的时候也是按照5万来计算的,所以在操作的时候我一直建议和强烈要求大家轻仓操作,控制好仓位,所以大家以后在操作的时候,仓位不能超过50%,如果要超过50%的朋友,一旦发现方向做错,必须迅速的止损出局。 其次,大家在操作还不熟练的时候一定要先练习,最开始要熟悉这个赚钱的方法,交易的方法,别还没学好的时候就大量的交易,这样是很不好的,(一旦失误,其实失误是很正常的,就会破坏自己的心态,觉得自己做是不能失误的,但是 不失误是不符合常理的啊,最后舍不得止损,导致亏损,然后对这个产品和投资方法失去信心,这个才是对咱们最大的损失)。有的朋友最开始的时候都能严格的少量操作,看到利润后就突然加量,甚至重仓操作,把自己置于危险的境地,这是我最担心的,结果和一些朋友交流后,发现亏损的朋友都是重仓操作的朋友,让我悲伤不已。当他们轻仓的时候能操作赚钱,而重仓的时候就亏钱,为什么呢?因为轻仓的时候,压力小,也有耐心等待,该止损止赢都下得了手,而一旦重仓之后,心态破坏,操作的手忙脚乱,最后就是亏损和失去信心。所以大家一定要记好这一点。 第三,客服中心让大家做公司的兼职经纪人,享受佣金的优势,我们在交易中就占据了优势地位,所以,可以把每次的目标定在固定的目标之内,而不是去追求利润最大化。这个很多人不一定理解,都想着利润最大化,在金融市场要利润最大化是比较难的,只有每次赚小钱,积小胜为大胜。10次操作,对8次就可以了,何况我们一天可以操作很多次呢。有的朋友交易量做的很大,所产生的佣金超过了他的本金,哪么只要他保持账面不亏,或者微亏,他的利润率都是很丰厚的。(这里为什么说利润率呢,因为大家投的资金不多,单个的利润值就不是很大,但是利润率很可观。所以你资金投得多,但是买的仓位做的轻的话,你赚钱也轻松。)而且公司对交易量较大的客户有奖励政策,很活动的希望保持客户不亏并且有利润,让每一位经纪人都赚到钱。 第四,在操作过程中,我建议大家在区间和方向都比较明显的时候操作,如果不满足上面两个条件都不要着急操作,不要想着天天都要赚哪么多钱,很多不适合操作的时候,我们就应该休息。这点也很重要,如果不适合操作的时候我们去操作,哪么我们就很可能亏损,这个时候不但钱赚不到,还会亏损。 第五,我的操作提示,如果盘中出现比较好操作的机会,我会对大家进行提示,哪么提示和自我判断有几点,第一的盘中分时走时的均线,也就是那根黄线,在黄线上方,我们沿着黄线开多单,在黄线下方,我们沿着黄线价位开空单。 什么叫沿着黄线呢,比如花生现在的价格是866,黄线的价格是863,哪么我们最多就是863或者864的价格开多单,而不是在价格远离黄线的价位开多单,同样开空单的方法也就是上面的方法相反,为了明确,我就多啰嗦一点。同样花生的价格是860,黄线价格是863,哪么我们就要等到价格反弹到863附近再开空单,而不是直接就在860开空单,这样会加大我们的风险的。如果价格有效跌破或者突破黄线,并且方向与我们下单方向相反,我们就要果断止损。 第六,区间操作,区间操作是什么意思呢,就是花生仁的价格会在一个箱体内波动为主,我们就可以利用这个箱体的价格差做交易赚钱,比如我前面说的在869-872区间做多,(这个区间都有点小)就是说当价格跌到869附近的时候开多单,涨到872附近就平掉多单。而不是涨到872这个价位附近去开多单,也不是涨到872就要去开空单,可能这点大家的理解出现了歧义,对大家的操作产生了很多负面影响。再比如,我说在866-858区间做空,哪么就是涨到866附近就开空单,跌到858附近也不开多单。这个就是利用价格波动区间进行操作。第七,方向选择,这个是有一定的难度的,当出现在支撑位和压力位的时候这个是最难选择的,很容易出错,哪么很多朋友想在这方面找办法,直接的办法就是利用趋势线,顺势操作,趋势线向上就做多为主,趋势线向下就做空为主。最有效的方法就是结合趋势,在区间内操作。在日线范围内迅速了结,不拿隔夜单。 只要做到以上7点,我们做这个花生仁现货就是很简单的,不会哪么容易亏钱的,就算是账面亏了,你也能通过你的身份优势赚到你该赚的利润。 希望大家有好的方法都可以拿出来交流。共同提高大家的交易水平,咱们一起共同发财! 这样的悲剧不要慌张!总会发生,总归能解决!只是看你怎么处理了!1 装上软件diskgenius,百度下,去正规的软件下载站,肯定有的,装好!大家可以从这里下载http:// 这时候我们打开diskgenius这个软件 看到那个30g空闲分区了吗 那就是我们误删的分区 这时候我们在这个分区上右键点击 然后选择 “搜索已丢失分区(重建分区表)” 点完后出现下面提示框 点“开始搜索” 然后提示搜索到一个分区 然后点 硬盘-保存分区表 闭Disk Genius后 打开 我的电脑 是不是分区就显示出来了。看看里面的数据是不是都在里面了。 感谢互联网,感谢原始发帖的人,感谢diskgenius软件!简化的操作和很实际的操作应用!所以记录发出!有惊无限~40G数据回来了!第二篇:利用“电子口岸”海关数据操作方法
第三篇:Q2V8程序计算器输入数据操作方法
第四篇:现货操作方法总结.
第五篇:删除逻辑驱动器后的数据恢复操作方法