thinkphp 关于table

用法

一般情况下,操作模型的时候系统能够自动识别当前对应的数据表,所以,使用table方法的情况通常是为了:

  1. 切换操作的数据表;
  2. 对多表进行操作;

例如:

 
  1. $Model->table('think_user')->where('status>1')->select();

也可以在table方法中指定数据库,例如:

 
  1. $Model->table('db_name.think_user')->where('status>1')->select();

table方法指定的数据表需要完整的表名,但可以采用下面的方式简化数据表前缀的传入,例如:

 
  1. $Model->table('__USER__')->where('status>1')->select();

会自动获取当前模型对应的数据表前缀来生成think_user数据表名称。

需要注意的是table方法不会改变数据库的连接,所以你要确保当前连接的用户有权限操作相应的数据库和数据表。 切换数据表后,系统会自动重新获取切换后的数据表的字段缓存信息。

如果需要对多表进行操作,可以这样使用:

 
  1. $Model->field('user.name,role.title')
  2. ->table('think_user user,think_role role')
  3. ->limit(10)->select();

为了尽量避免和mysql的关键字冲突,可以建议使用数组方式定义,例如:

 
  1. $Model->field('user.name,role.title')
  2. //表中的默认前缀可以写为C('DB_PREFIX') . 'user' 效果同 think_user
  3. ->table(array('think_user'=>'user','think_role'=>'role'))
  4. ->where('user.user_id=role.role_id)
  5. ->limit(10)->select();

使用数组方式定义的优势是可以避免因为表名和关键字冲突而出错的情况。 一般情况下,无需调用table方法,默认会自动获取当前模型对应或者定义的数据表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值