未分类

onethink之碎片记录

onethink系统信息

版本 v.10

框架版本_thinkphp3.2.3

onethink内置lists方法的多表查询

$prefix = C('DB_PREFIX');
$l_table = $prefix.(AuthGroupModel::MEMBER);
$r_table = $prefix.(AuthGroupModel::AUTH_GROUP_ACCESS);
$model = M()->table( $l_table.' m' )->join ( $r_table.' a ON m.uid=a.uid' );
$_REQUEST = array();
$list = $this->lists($model,array('a.group_id'=>$group_id,'m.status'=>array('egt',0)),'m.uid asc',null,'m.uid,m.nickname,m.last_login_time,m.last_login_ip,m.status');
int_to_string($list);

内置与自定义方法使用

 

  1. 这条语句有多表联查(join)、别名(alias)、字段(field)、数据限制(limit)、按序(order) 方法使用实例
$data = $this->alias('a')->field('a.*,a.create_time as au_create_time,a.status as au_status,a.project_id as au_project_id,p.*,r.*')->join('__PROJECT__ as p ON a.project_id = p.id')->join('__PROJECT_ROLE__ as r ON a.role_id = r.id')->where(array('a.uid'=>$uid,'a.is_delete'=>0,'a.status'=>$s))->order('a.create_time DESC')->limit(6)->select();

   数据库内置函数

$result= $relation->distinct(true)->where($data1)->getField('bid',true);//去重复,获取品牌

获取最后执行的SQL语句

M()->getLastSql(); //写在最后执行文件中

2.实例其它控制器

A方法用于在内部实例化控制器,调用格式:
A(‘[项目://][分组/]模块’,’控制器层名称’)
最简单的用法:

    $User = A('User');

表示实例化当前项目的UserAction控制器(这个控制器对应的文件位于Lib/Action/UserAction.class.php),如果采用了分组模式,并且要实例化另外一个Admin分组的控制器可以用:

    $User = A('Admin/User');

也支持跨项目实例化(项目的目录要保持同级)

    $User = A('Admin://User');

表示实例化Admin项目下面的UserAction控制器
3.1版本增加了分层控制器的支持,所以还可以用A方法实例化其他的控制器,例如:

    $User = A('User','Event);

实例化UserEvent控制器(对应的文件位于Lib/Event/UserEvent.class.php)。
实例化控制器后,就可以调用该控制器中的方法,不过需要注意的情况是,在跨项目调用的情况下,如果你的操作方法 有针对当前控制器的特殊变量操作,会有一些未知的问题,所以,一般来说,官方建议需要公共调用的控制器层单独开发,不要有太多的依赖关系。

 

自定义方法

  1. 模板调用自写的方法  参数
{:get_picture($data['head_img'],'path')}

OT通用分页方法—-多表查询分页时

$data = $this->lists('member',$comdi,'audition_num','uid');
$model = M()->table(__MEMBER__.' m')->join('LEFT JOIN __RESUME_TERM__ r ON r.id = m.uid');

 model层也使用add命名方法

   public function add($data)
    {
        if(!$this->create($data)) {
            return $this->getError();
        }

        $id = parent::add();
        dump($id);
        $info = parent::getError();
        dump($info);
    }

 

onethink 用户密码重置

在User模块中的配置文件中有加密字符串

define('UC_AUTH_KEY', '_mSMp0C.w4TZ~8n$b>rfuJ[+xE|y]}<zg@P&=iX6');

重置方法:输入之后直接替换数据库密码字段方可

echo md5(sha1('admin123') . '_mSMp0C.w4TZ~8n$b>rfuJ[+xE|y]}<zg@P&=iX6');

相关资料:  传送门


onethink 部件

部件写法示例 传送门

 

 

 

发表评论