我目前正在通过执行以下操作更新数据库中的多行:
我在一个帖子中取一个数组并循环遍历它,每个成员都是fieldname=>value
的数组,我正在对每个成员进行更新。问题是,当我以这种方式更新时,我设置的mutators不会运行。有没有另一种更新的方法是有效的,并会调用mutators?
代码:
foreach ($post['row'] as $row) {
Instances::where('id', $row['id'])->update($row);
}
答案 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);