簡體   English   中英

Doctrine 查詢更新用戶表

[英]Doctrine query to update users table

我有一個包含以下字段的表單:

  • email
  • 密碼
  • url
  • 負責任的
  • pais(這是一個多選框)
  • 角色

我已經在 Model_Users class 中創建了這個方法

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();
}

The problem is that this isn't really updating... and if I do something like $q->getSqlQuery() the SQL query I get is UPDATE users SET email =?, password =?, url =?, responsable =?, role =? WHERE (id = 150) UPDATE users SET email =?, password =?, url =?, responsable =?, role =? WHERE (id = 150)

我猜我不能使用 foreach 循環來解決這個問題,......那么解決它的方法是什么?

如果您已經有一個可用的Model_User實例,那么它應該是您嘗試更新的記錄。 否則,您只需使用查詢。 updateUser不屬於Model_User它屬於Model_User_Table假設您實際上正在為每個 model 生成 Doctrine 表類(我個人推薦)。

要回答您的實際問題,盡管它應該看起來像這樣:

   $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 ,代碼取決於pais在 DB 中的存儲方式(它是什么 doctrine 類型 - 數組、object、字符串、M2m 關系?)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM