что-то не так с моим методом сохранения cakePHP - PullRequest
0 голосов
/ 29 апреля 2011

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

function save_emails(){
    App::import('Model', 'User');
    App::import('Model', 'EmailSave');

    $this->EmailSave = new EmailSave();
    $this->User      = new User();

    $users  = $this->User->find("all", array(
        'conditions' => array(
            'OR' => array(
                array('User.user_type_id' => '4'),
                array('User.user_type_id' => '1')
            ) 
        ),
        'fields' => array(
            'username',
            'email'
        ),
        'recursive' => -1
    ));

    foreach($users as $user){
        //pr($user);
        $to         = $user['User']['email'];
        $subject    = $email_template['subject'];
        $template   = //calling a templating method;

        $save_send['EmailSave']['created']    = date("Y-m-d H:i:s", time());
        $save_send['EmailSave']['modified']   = date("Y-m-d H:i:s", time());
        $save_send['EmailSave']['send_to']    = $to;
        $save_send['EmailSave']['subject']    = $subject;
        $save_send['EmailSave']['message']    = $template;

        //pr($save_send);
        $this->EmailSave->save($save_send);
        //echo $to."<br />".$subject."<br />".$template."<br />".$cron_id."<br />";
    }
}

это довольно просто, я имею в виду, что не использую никаких сложных методов, теперь, когда я запускаю метод find для пользователя:

$users  = $this->User->find("all", array(
            'conditions' => array(
                'OR' => array(
                    array('User.user_type_id' => '4'),
                    array('User.user_type_id' => '1')
                ) 
            ),
            'fields' => array(
                'username',
                'email'
            ),
            'recursive' => -1
        ));

, он возвращает 2 результата, и когда я пытаюсь напечатать результат, используя метод pr торта, он выведет правильные результаты, но ... если я применю метод сохранения, он вставит только один из результатов, как это возможно?Я прослеживал коды построчно, и это было просто найти, проблема в том, что когда я сохраняю их в базу данных, не удается сохранить все 2 результата, пожалуйста, помогите.

1 Ответ

0 голосов
/ 29 апреля 2011

http://book.cakephp.org/view/1031/Saving-Your-Data

Создание или обновление контролируется полем id модели. Если установлено значение $Model->id, запись с этим первичным ключом обновляется. В противном случае создается новая запись.

При вызове save() в цикле не забудьте позвонить create().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...