首页 理论教育PHPMVC开发实战:动态查询带来高效率!

PHPMVC开发实战:动态查询带来高效率!

【摘要】:如果只是获取特定的字段或者获取指定的记录,使用动态查询更加高效。动态查询免除了where条件部分,直接动态传参即可。高级模型中一共提供了3个操作方法用于实现动态查询,分别为getBy、getFieldBy和top。上述代码中传入参数“kf@86055.com”,即表示在UserEmail字段中查找值为kf@86055.com的记录。动态查询只有top操作方法需要使用AdvModel高级模型,其他两个并不需要,这里为了便于讲解,所以将其归类为高级模型。

如果只是获取特定的字段或者获取指定的记录,使用动态查询更加高效。动态查询免除了where条件部分,直接动态传参即可。高级模型中一共提供了3个操作方法用于实现动态查询,分别为getBy、getFieldBy和top。

(1)getBy

getBy方法用于根据某个字段的值查询数据,这里所说的某个字段是不确定的,是一个动态的字符串,例如getByEmail,就表示根据Email字段查询数据,如以下代码所示。

上述代码中传入参数“kf@86055.com”,即表示在UserEmail字段中查找值为kf@86055.com的记录。这里需要注意的是,在tpk_user表中并不存在UserEmail这个字段,但结果一样正确,这是因为系统默认使用了模型与数据表映射规则,即系统会将UserEmail这个字符串解释为user_email字段。上述代码的转换后的SQL语句如下所示。

如果字段为数字类型,需要传入正确的数字,例如getById(1)。

(2)getFieldBy(www.chuimin.cn)

getFieldBy和getBy相类似,但getFieldBy不仅获取到某个字段指定值的数据,还可以根据某个字段值得到另一个字段的值。假设根据kf@86055.com查询结果,得到该用户的id,那么可以动态表示为getFieldByEmail(“kf@86055.com”,“id”),如以下代码所示。

上述代码转换后的SQL语句如下所示。

(3)top

getN操作方法用于跳过记录,而top操作方法用于包含记录。top操作方法是一个动态方法,不需要传递参数,它的表示方式直观好记,例如需要获取前5个用户,那么就表示为top5()。严格意义上数字5并不是一个合格的方法命名规则,但在动态操作中是被允许的。

动态查询只有top操作方法需要使用AdvModel高级模型,其他两个并不需要,这里为了便于讲解,所以将其归类为高级模型。需要说明的是AdvModel模型完全适用于Model基础模型,所以在动态模型中,基础模型的where、order等连贯操作都是通用的。