2011-04-29 3 views
0

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

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 />"; 
    } 
} 

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

$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 результата, и когда я пытаюсь напечатать результат с использованием метода торта, это w ould напечатать правильные результаты, но ... если я применил метод save, он только вставит один из результатов, как это возможно? Я проследил коды по строкам, и он прошел через только найти, проблема в том, когда я сохраняю их в базе данных, он не может сохранить все 2 результата, пожалуйста, помогите.

ответ

0

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

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

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

+0

alew man! я чувствую себя глупо! большое спасибо – littlechad

Смежные вопросы