Thinkphp 使用join()方法以后无法在使用field()方法

php中文网
发布: 2016-07-06 13:51:30
原创
2218人浏览过

    //  获取所有的支出记录
    public function gainHavingPayRecord(){
        $m = M('pay_record');
        $result = $m->order('payrecord_pay_time desc')
            ->join("LEFT JOIN x_account ON x_pay_record.payrecord_payer = x_account.account_id")
            ->field('account_phone,account_password,account_salt,account_alipay,account_createtime,account_cash,account_bank,account_isdelete',true)
            ->select();
        dump($result[0]);
        return $result;
    }
登录后复制
登录后复制

之后输出的数据所有account表中的数据都被过滤了 只输出了pay_record表中的数据

array(10) {
  ["payrecord_id"] => string(1) "1"
  ["payrecord_pay_time"] => string(1) "0"
  ["payrecord_payer"] => string(1) "1"
  ["payrecord_payment_type"] => string(1) "1"
  ["payrecord_item_category"] => string(1) "1"
  ["payrecord_item_son_category"] => string(1) "1"
  ["payrecord_sum"] => string(4) "3000"
  ["payrecord_record_time"] => string(10) "1467428218"
  ["payrecord_confirm"] => string(1) "0"
  ["payrecord_confirm_time"] => string(1) "0"
}
登录后复制
登录后复制

官方文档是这么说的

Thinkphp   使用join()方法以后无法在使用field()方法

请问还有有什么方法可以吧这些字段过滤掉吗

->field('account_phone,account_password,account_salt,account_alipay,account_createtime,account_cash,account_bank,account_isdelete',true)
登录后复制
登录后复制

其实我也可以直接把想要使用的数据存到一张表里就可以不用join()方法减少服务器压力.但是遇到这种问题我想解决了 ,一旦那天非常迫切的需要这样处理数据也不至于无从下手.

立即学习PHP免费学习笔记(深入)”;

回复内容:

    //  获取所有的支出记录
    public function gainHavingPayRecord(){
        $m = M('pay_record');
        $result = $m->order('payrecord_pay_time desc')
            ->join("LEFT JOIN x_account ON x_pay_record.payrecord_payer = x_account.account_id")
            ->field('account_phone,account_password,account_salt,account_alipay,account_createtime,account_cash,account_bank,account_isdelete',true)
            ->select();
        dump($result[0]);
        return $result;
    }
登录后复制
登录后复制

之后输出的数据所有account表中的数据都被过滤了 只输出了pay_record表中的数据

array(10) {
  ["payrecord_id"] => string(1) "1"
  ["payrecord_pay_time"] => string(1) "0"
  ["payrecord_payer"] => string(1) "1"
  ["payrecord_payment_type"] => string(1) "1"
  ["payrecord_item_category"] => string(1) "1"
  ["payrecord_item_son_category"] => string(1) "1"
  ["payrecord_sum"] => string(4) "3000"
  ["payrecord_record_time"] => string(10) "1467428218"
  ["payrecord_confirm"] => string(1) "0"
  ["payrecord_confirm_time"] => string(1) "0"
}
登录后复制
登录后复制

官方文档是这么说的

Thinkphp   使用join()方法以后无法在使用field()方法

请问还有有什么方法可以吧这些字段过滤掉吗

->field('account_phone,account_password,account_salt,account_alipay,account_createtime,account_cash,account_bank,account_isdelete',true)
登录后复制
登录后复制

其实我也可以直接把想要使用的数据存到一张表里就可以不用join()方法减少服务器压力.但是遇到这种问题我想解决了 ,一旦那天非常迫切的需要这样处理数据也不至于无从下手.

立即学习PHP免费学习笔记(深入)”;

字段前加上表名或者表的别名:

$result = M('x_account as acc')->join('x_pay_record as rec on rec .payrecord_payer = acc.account_id')->field('acc.字段1, acc.字段2, rec.字段3, rec.字段4')->select(); 
登录后复制

join后必须要使用表名的 因为mysql不知道你要哪张表的哪个字段过滤那个表的哪个字段

应该有.吧,比如说pay_record.acc

你可以先用getLastSql看下sql语句是怎么写的,join和field应该是可以结合的,所以你再检查一下你的关键字。
加一句test

field里面要加上表名field('表名.account_phone,表名.account_password,表名.account_salt,表名.account_alipay,表名.account_createtime,表名.account_cash,表名.account_bank,表名.account_isdelete',true)

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号