wsd15321 2018-10-17 14:40:46 3146次浏览 3条回复 1 1 0

使用model的save来更新数据,可以触发Behavior,可以走rule验证,但用updateAll就不会,但我感觉能一次性批量修改不用却要foreach循环来修改有点难受

觉得很赞
  • 回复于 2018-10-17 18:02 举报

    显示不是。

    save 操作是ActiveRecord 下的方法,符合ORM的设计思想:保存一个对象。

    updateAll 虽然在 ActiveRecord 下,但它只是一个快捷方法,它是对数据库层的直接操作。

    批量写入数据,当然是 updateAll 更快。

    可深入理解ORM

  • 回复于 2018-10-17 19:11 举报

    一楼说得不错,save属于ORM系列的,我加一条:save不但是保存和更新操作的统一,而且还会触发内部的验证机制,验证机制是我要强调的。完事!

    2 条回复
    回复于 2018-10-18 09:23 回复

    那么批量操作你是愿意循环save还是使用updateAll

    回复于 2018-10-18 10:00 回复

    批量操作当然首选updateAll呀,自己可以确保数据安全正确的情况下,肯定咋块咋弄。一般单条记录的操作,正常表单的更新啥的都要用save()呗。

  • 回复于 2018-10-18 09:26 举报

    通过翻源码我发现rule验证器是可以自己定义的,updateAll应该也能自己覆写,加上$this->trigger()和rule验证什么的,不过文档似乎没提过这么弄

您需要登录后才可以回复。登录 | 立即注册