thinkphp中model类自动完成功能 回调函数能不能获取其他字段的值
展开全部
这个是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)把需要的东西查出来。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询