ThinkPHP视图模型动态改变视图联表字段,因为D方法的伪单例而产生BUG的错误处理

因为TP核心类型基类里在设置完 trueTableName 真实表名后,就不会因为你重新定义了联表字段而再次去重新获取表名,所以当你动态改变 viewFields 属性时,如果关联的表发生了变化,必须清空一下 trueTableName 属性,否则 SQL语句还是用原来的联表,会产生错误


解决的例子如下:


<?php
	private function _setCommonViewFields() {
		$this->trueTableName = null;
		$this->viewFields = array(
			'Ip' => array(
				'ip_id',
				'address_1',
				'address_2',
				'address_3',
				'address_4',
				// 'unit_id',
				// 'subnet_id',
				'server_id',
				'server_type',
				// 'card_id',
				'card_order',
				'use_time',
				'use_state',
				'plan_state',
				'lock_state',
				'_type' => 'LEFT',
			),
			'PlanUnit' => array(
				// 'unit_id',
				// 'unit_type_id',
				'unit_name' => 'plan_unit_name',
				// 'unit_englishname',
				// 'add_time' => 'unit_add_time',
				// 'order_num',
				'_table' => T1_PREFIX . 'unit',
				'_on' => 'Ip.unit_id = PlanUnit.unit_id',
				'_type' => 'LEFT',
			),
......


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值