日期:2014-05-16  浏览次数:20462 次

ThinkPHP学习笔记1-----CURD

ThinkPHP为我们提供非常快捷的方法执行curd操作,怎么用还是看手册,这里主要写一点我自己经验

例如

(一) 访问:http://localhost:1243/think/index.php/Form/show      显示数据库列表函数

代码如下

        public function show(){
			//进行输出表格
			$user=M("user");
			$userArr=$user->select();
			//dump($userArr);
			$this->assign("userArr",$userArr);
			$this->display();	
		}

1.在M()函数中,user代表的是表名,也就是数据库中的user表.如果无法实例化对象,检查:

  (1).是否在conf/config.php中设置了 ‘DB_DSN’,‘DB_PREFIX’(如果表名存在前缀);

  (2)是否存在 表前缀_user表

2.display(0是存在于Action类中的函数,就像Smarty,ThinkPHP 的Action相当于smarty中的实例化的$smarty类.如果未指定display页面,则会默认寻找tpl/Form/show.html


(二).      访问:http://localhost:1243/think/index.php/Form/add     新增数据到数据库中

  代码如下:

//添加数据
	public function add(){
	     // $model=D("Form");
	    $user=M("user");
            //验证规则可以写在action中
            $validate = array(
                array('name','require','用户名不能为空'), // 为空验证
                array('name','','用户名已存在','1','unique','1'),
                array('mail','email','邮箱格式错误'),
            );
            //将规则写入model
            $user->setProperty("_validate",$validate);
			if(!isset($_POST['sub'])){
				$this->display();
				exit;
			}
			//表单提交
  	    //unset($_POST['sub']);
            //create函数其实是对数据库进行一次验证,在数组里面有的列才会存在在create所返回的数组中,所以可以省去unset操作
            //例如在数据库表中,不存在列 mail,但是表单提交上来的有mail,create进行验证后返回的数组中不会包含mail
            $res=$user->create();
            if(!$res){
               //错误提示
               $error=$user->getError();
               $this->assign("error",$error); 
               $this->display();
               exit;       
            }		
			$result=$user->add();
			if($result>0){
				$this->success("添加成功","__URL__/show");
			}else{
				$this->error("添加失败,请重试");
			}
		
		}

(1). D()函数在3.1以后无法进行单独的表设置,如果在Model文件夹下定义了一个FormModel.class.php,再用D("Form")实例化该Model,会提示数据表 Form不存在

暂未找到方法,请大家赐教

(2).进行自动验证的时候,可以将验证的规则写在action中,如上代码

     倘若非要写在一个自定义的Model中,则如下

 protected $_validate=array(
    //验证规则可以写在action中
            array('name','require','用户名不能为空'), // 为空验证
            array('name','','用户名已存在','1','unique','1'),
            array('mail','email','邮箱格式错误'),
    );

    (3).关于create函数和add函数,见如上程序代码中注释


      欢迎提出问题,共同解决。