搜索
系统检测到您的用户名不符合规范:

has,haswhere,json讲解.

浏览:6236 发布日期:2017年09月21日 分类:系统代码 关键字: tp5,join,has,haswhere
has与haswhere还有tp5.0与5.010版本的json不同.TP5实战群:316497602
hasone
hasOne('关联模型名','外键名','主键名',['模型别名定义'],'join类型');
他这个, 模型名没问题, 外键在我们的理解应该是Member_id. 因为本表相当于外表.而member_id理解为主键表id. 所以有可能理解偏差.
public function member()
{
return $this->hasOne('Member','id','member_id');
}

//has语法.
$this->moneyrechargelog_model->has('member')->select();
//打印语句为子查询.
SELECT * FROM `qlqw_money_recharge_log` `a` WHERE EXISTS ( SELECT `b`.`id` FROM `qlqw_member` `b` WHERE ( `a`.`member_id` =b.id ) )

//haswhere查询方法
$this->moneyrechargelog_model->haswhere('member')->select();
//打印语句
SELECT `MoneyRechargeLog`.* FROM `qlqw_money_recharge_log` `MoneyRechargeLog` INNER JOIN `qlqw_member` `Member` ON `MoneyRechargeLog`.`member_id`=`Member`.`id`

其中has为子查询方式, haswhere为join方式.
曾经我们做过测试, 子查询要比join慢10倍的速度.
这个地方官方没有给出任何解释.所以本人很少使用has进行查询.
要么join查询. 要么haswhere查询.
这里面还有一个问题, 没有找到has或者haswhere多个使用的方法.

扩展: 在tp5.0版本中, join查询会按照ab别名库. 在10版本中,会以库名进行别名区分.这个地方如果库名很长会很麻烦, 虽然可以alias进行别名, 但是还是觉得不方便.

ps: 在join查询中, b标别名 比如->join('member b','a.id=b.member_id');
其中member b中间只能有一个空格, 有两个空格就会报错. 切记

TP5实战群:316497602
收藏
宁静之美丶
积分:1609 等级:LV3
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /