我有一个包含以下字段的表单:
我在Model_Users类中创建了这个方法
public function updateUser($user) {
$q = Doctrine_Query::create()
->update('Model_Users usr'); //aca estaba el ;
foreach ($user as $k => $v) {
if ($k == 'pais' || $k == 'id') {
continue;
} else {
$q->set("usr.$k", '?', $v);
//echo "Key: $k => Value: $v ||";
}
}
$q->where("usr.id=$user[id]");
$q->execute();
}
问题是这并没有真正更新......如果我做了回复$q->getSqlQuery()
之类的事情,我得到的SQL查询是UPDATE users SET email = ?, password = ?, url = ?, responsable = ?, role = ? WHERE (id = 150)
。
我猜我不能使用foreach循环来做到这一点,...那么它会有什么方法呢?
答案 0 :(得分:0)
如果您已有Model_User
个实例,那么它应该是您尝试更新的记录。否则你只需使用查询。假设您实际为每个模型生成Doctrine表类(我个人推荐),updateUser
不属于Model_User
它属于Model_User_Table
。
要回答你的实际问题,尽管看起来像这样:
$q = Doctrine_Query::create()
->update('Model_Users');
foreach ($user as $k => $v) {
if ($k == 'pais' || $k == 'id') {
continue;
} else {
$q->set($k, $v);
}
}
$q->where("usr.id = ?", $user[id]);
$q->execute();
至于设置pais
代码是goign依赖于pais
在DB中的存储方式(它是什么学说类型 - 数组,对象,字符串,M2m关系?)。