thinkphp中model类自动完成功能 回调函数能不能获取其他字段的值

 我来答
yanyuele
2017-03-09 · TA获得超过138个赞
知道答主
回答量:56
采纳率:0%
帮助的人:54万
展开全部

这个是tp中add的源码,也就是Model.class.php中的add方法,你可以粗略看下,

public function add($data='',$options=array(),$replace=false) {
    if(empty($data)) {
        // 没有传递数据,获取当前数据对象的值
        if(!empty($this->data)) {
            $data           =   $this->data;
            // 重置数据
            $this->data     = array();
        }else{
            $this->error    = L('_DATA_TYPE_INVALID_');
            return false;
        }
    }
    // 数据处理
    $data       =   $this->_facade($data);
    // 分析表达式
    $options    =   $this->_parseOptions($options);
    if(false === $this->_before_insert($data,$options)) {
        return false;
    }
    // 写入数据到数据库
    $result = $this->db->insert($data,$options,$replace);
    if(false !== $result && is_numeric($result)) {
        $pk     =   $this->getPk();
          // 增加复合主键支持
        if (is_array($pk)) return $result;
        $insertId   =   $this->getLastInsID();
        if($insertId) {
            // 自增主键返回插入ID
            $data[$pk]  = $insertId;
            if(false === $this->_after_insert($data,$options)) {
                return false;
            }
            //这个是最终返回的数据(也就是自增的id)
            return $insertId;
        }
        if(false === $this->_after_insert($data,$options)) {
            return false;
        }
    }
    return $result;
}

源码里如果主键是自增的,那么返回当前自增的id,如果不是自增,比如字符串,会返回Driver.class.php中insert方法的返回值也就是执行成功影响的行数。所以,应该是不可以返回其他参数的。你可以在通过M('table')->find($id)把需要的东西查出来。。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式