先来看看save()
方法:
public function save($runValidation = true, $attributeNames = null) { if ($this->getIsNewRecord()) { return $this->insert($runValidation, $attributeNames); } return $this->update($runValidation, $attributeNames) !== false; }
save()
方法中,先判断是否是新增记录,新增记录执行insert()
方法,更新记录执行update()
,所以这个方法指示一个中转站。
insert()
方法,执行数据库插入操作,返回一个boolean
值,也没什么要说的。
update()
方法,该方法最后调用了updateAll()
方法,如果更新失败,返回false
值,但是如果更新成功,返回的是受影响的行数,如果数据没有发生任何变化(不包含值的类型发生改变),则返回的是一个0
值,
而save()
方法在更新的时候,返回值与false
进行严格比较,返回0
也表示更新成功。