Zend дублирует строки на MySQL вставке - PullRequest
2 голосов
/ 13 марта 2012

По какой-то причине, когда я делаю вставку mysql db из Zend, моя строка становится тупой.Я пробовал прямую вставку через phpmyadmin, и она отлично работает, так что это не проблема сервера MySQL.

Это код, который я использую:

<?php

class Model_Team extends Zend_Db_Table_Abstract {

    protected $_name = 'team';

    public function createUser($data) {
        $user = $this->createRow();
        $user->name = $data['name'];
        $user->title = $data['title'];
        $id = $user->save();
        return $id;
    }
}

?>

Заранее спасибо.

РЕДАКТИРОВАТЬ:

Я обнаружил, что это дублирование происходит только когдая вызываю форму через AJAX (модальное окно), хотя отправка формы нормальная, а не запрос ajax)

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Я не знаю, почему ваш код выполняет двойную загрузку базы данных при сохранении, но это не должно иметь значения, так как вы используете объект Row и save ().(сохранить () вставки или обновления)Вы можете реструктурировать функцию createUser (), чтобы она не могла создать новую строку, если строка уже существует.

<?php

class Model_Team extends Zend_Db_Table_Abstract {

protected $_name = 'team';

public function createUser(array $data) {

    $user = $this->createRow();
    //test if user has id in the array
    if (array_key_exists('id', $data)){
        $user->id = $data['id'];
    }
    $user->name = $data['name'];
    $user->title = $data['title'];
    $user->save();
    //no need to create a new variable to return the user row
    return $user;
   }
}

Этот метод создаст и обновит строку пользователя.

Чтобы помочь вам в дальнейшем, мне нужно увидеть код контроллера, который произошел с большинством моих двойных насосов.

0 голосов
/ 13 марта 2012

Вместо использования createRow () вы пытались использовать insert ()?

/**
 * Insert array of data as new row into database
 * @param array $data associative array of column => value pairs.
 * @return int Primary Key of inserted row
 */
public function createUser($data)
{
    return $this->insert($data);
}

Кроме того, можем ли мы увидеть код ajax? Может быть, что форма также публикуется?

...