2010-02-19 3 views
0

В проекте cakePHP, который я создаю, я хочу вставить определенное количество идентичных записей. Они будут служить в качестве записей закладок, в которые будут добавлены дополнительные данные позже. Каждая запись будет вставлять идентификаторы, взятые из двух отношений belongs_to, а также двух других строковых значений.Как вставить несколько строк с помощью cakePHP

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

То, что я не знаю:

  1. как настроить цикл для обработки заданного количества вставок

  2. как определить поля формы в CakePHP, что только устанавливает число записи для создания.

То, что я попытался следующий:

function massAdd() { 
    $inserts_required = 1; 
    while ($inserts_required <= 10) { 
     $this->Match->create(); 
     $this->Match->save($this->data); 
     echo $inserts_required++; 
    } 

    $brackets = $this->Match->Bracket->find('list'); 
    $this->set(compact('brackets')); 
} 

Что происходит:

  1. В верхней части экрана, над тип документа, строка 12345678910 является отображается на экране

  2. Создано 11 записей, и только последняя запись имеет значения, переданные в форме. Я не знаю, почему создано 11 записей, а не 10, и почему только последние записи имеют введенные данные формы?

Как всегда, ваша помощь и руководство приветствуются.

+0

Каков результат вашего SQL-журнала? Я просто сделал то же, что и вы, и я получил 10 записей, вставленных правильно, с данными формы во всех них. Ваш журнал sql поможет нам понять это. –

ответ

2
  1. на ваш взгляд, попытаться написать что-то вроде

    echo $form->input('Answer.n.title', array('type'=>text')); 
    

    в контроллер записи

    function add(){ 
        $this->Answer->saveAll($this->data); 
    } 
    
  2. в моем проекте я использовал JQuery, чтобы добавить новую строку без перезагрузки страницы.

+0

Что я пробовал: function massAdd() {\t \t $ inserts_required = 1; while ($ inserts_required <= 10) { $ this-> Match-> create(); $ this-> Match-> save ($ this-> data); echo $ inserts_required ++; } $ brackets = $ this-> Match-> Bracket-> find ('list'); $ this-> set (compact ('brackets')); } Что происходит: 1) в верхней части экрана над типом документа отображается строка 12345678910, 2) создано всего 11 записей, и только последняя запись имеет значения, переданные в форма. Я не знаю, почему создано 11 записей в отличие от 10, и почему только последние записи имеют введенные данные формы? – Paul

+0

Я не знаю, почему только 10-я запись была сохранена, потому что из-за вашего кода должно быть 10 вставленных SAME записей ... немного наконечника, прежде чем сохранять только сделать pr ($ this-> data); и проанализируйте, в каком формате вы получили свои данные для публикации. – Aziz

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