日期:2014-05-17  浏览次数:20583 次

thinkphp 常见问题及 使用总结
    <span style="color: #ff0000;">=================?? 总结 ?? =================</span>
?
thinkphp中的bug及技巧与策:<br>1. 模板中不能使用的标签<br>{$content} {$i}<br>2. if标签<br>如:<br>试验后总是有想不到的错误, 这样,还不如直接用php<br>if(…){ …?>来得块些呢.
约定:<br>1.所有类库文件必须使用.class.php作为文件后缀,并且类名和文件名保持一致<br>2.控制器的类名以action为后缀<br>3.模型的类名以model为后缀,类名第一个字母须大写<br>4.数据库表名全部采用小写,
如:<br>数据表名: 前缀_表名<br>模型类名: 表名model 注:这里的表名第一个字母要大写<br>创建对象: d(‘表名’) 注:这里的表名第一个字母要大写
定义控制器类<br>class indexaction extends action{<br>public function show(){<br>echo ‘这是新的 show 操作’;<br>}<br>}<br>然后在浏览器里面输入
http://localhost/myapp/index.php/index/show/
定义模型类:<br>class 表名model extends model{<br>[//手动定义字段[可选]<br>protected $fields = array(<br>‘id’,<br>‘username’,<br>‘email’,<br>‘age’,<br>‘_pk’=>’id’, //主键<br>‘_autoinc’=>true //是否自增<br>)<br>]<br>}
记录的修改:<br>$user = d(“user”) // 实例化 user 对象<br>$user->find(1) // 查找 id 为 1 的记录<br>$user->name = ‘thinkphp’ // 把查找到的记录的名称字段修改为 thinkphp<br>$user->save() // 保存修改的数据<br>更新特定字段的值<br>$user->setfield(‘name’,'topthink’,'id=1′)<br>同样可以支持对字段的操作<br>$user->setfield(‘score’,'(score+1)’,'id=1′)
新建记录,方法1:<br>$user = new usermodel() //实例化 user 对象<br>$user->字段名 = 字段值 //给字段赋值<br>$user->add() //添加记录<br>新建记录,方法2:<br>$data['字段名'] = 字段值; //给字段赋值<br>$user = d(‘user’); //实例化 user 对象<br>$user->add($data); //$insertid,add 方法的返回值就是最新操る的主键值,可以直接猎取。<br>新增多条记录:<br>$user = new usermodel()<br>$data[0]['name'] = ‘thinkphp’<br>$data[0]['email'] =<br>$data[1]['name'] = ‘流年’<br>$data[1]['email'] =<br>$user>addall($data)
删除记录<br>$user->find(2)<br>$user->delete() // 删除查找到的记录<br>$user->delete(’5,6′) // 删除主键为 5、6 的数据<br>$user->deleteall() // 删除查询出来的所有数据
记录查询
$user->getdbfields() //猎取当前数据字段<br>$user->findall(); //查找所有记录<br>$user->findall(’1,3,8′) //查询主键为1,3,8的记录集<br>$user->count() // 猎取记录数<br>$user->max(‘score’) // 猎取用户的最大积分<br>$user->min(‘score’,'score>0′) // 猎取积分大于 0 的用户的最小积分<br>$user->avg(‘字段名’) // 猎取所有记录的字段值的平均值<br>$user->sum(‘字段名’) // 统计字段值<br>$user->getn(2,’score>80′,’score desc’) // 返回符合条件的第 2 条记录<br>$user->getn(2,’score>80′,’score desc’) //还可以猎取最后第二条记录<br>$user->first(‘score>80′,’score desc’) //如果要查询第一条记录,还可以使用<br>$user->last(‘score>80′,’score desc’) // 猎取最后一条记录<br>$user->top(5,”,’score desc’) // 猎取积分最高的前 5 条记录<br>$user->getby(‘name’,'liu21st’) //跟据字段的字段值来查询记录
$model = new model() // 实例化一个 model 对象 没有对应任何数据表<br>$model->query(“select * from think_user where status=1″)
$objrs = $model->query(“select * from think_user where status=1″) //自定义查询<br>$model->execute(“update think_user set name=’thinkphp’ where status=1″) //用于更新和写入数据的 sql 操作,返回影响的记录数
$user->starttrans() // 启动事务<br>$user->commit() // 提交事务<br>$user->rollback() // 事务回滚
模板:
$this->assign(‘name’,$value); //在 action 类里面使用 assign 方法对模板变量赋值,无论何种变量类型都统一使用 assign 赋值
$this->display() // 输出模版文件
批量赋值<br>$array['name'] = ‘thinkphp’<br>$array['email'] =<br>$array['phone'] = ”<br>$this->assign($array)
$this->display() // 调用 user 模块的 read 操作模版<br>$this->display(‘edit’) // 调用 user 模块的 edit 操作模版<br>$this->display(‘member:read’) // 调用 member 模块的 read 操作模版<br>$this->display() // 调用 xp 主题的 user 模块的 edit 操作模版<br>$this->display(‘../member/read.html’) // 直接指定模版文件的全名
模板标签:
{ } 或 {// 注释内容 } //模板注释<br>{$user['name']} //输出数组变量<br>{$user:name} //输出对象的属性
为了方便模板定义,无论输出