如何在laravel质量更新中使用mutators?

时间:2014-05-09 21:07:46

标签: php laravel laravel-4 eloquent updates

我目前正在通过执行以下操作更新数据库中的多行:

我在一个帖子中取一个数组并循环遍历它,每个成员都是fieldname=>value的数组,我正在对每个成员进行更新。问题是,当我以这种方式更新时,我设置的mutators不会运行。有没有另一种更新的方法是有效的,并会调用mutators?

代码:

foreach ($post['row'] as $row) {
     Instances::where('id', $row['id'])->update($row);
  }

1 个答案:

答案 0 :(得分:1)

您可能会通过执行以下操作来使用您的mutators:

foreach ($post['row'] as $row) 
{
     $data = Instances::where('id', $row['id'])->first();

     foreach($row as $key => $value)
     {
        $data->$key = $value; // which is the same as $data->setAttribute($key, $value);
     }

     $data->save();
}

你不能只是覆盖更新方法吗?

class BaseModel extends Eloquent {

    public function update($array)
    {
        parent::update($this->trimAll($array));
    }

    public function trimAll($data)
    {
        /// trim them here
    }

}

你可以继续使用:

Instances::where('id', $row['id'])->update($row);