2013-09-18 1 views
1

В настоящее время я создаю приложение для управления моими действиями TO-DO.CAKEPHP - самозаписывающаяся таблица перезаписывает переменную

В моей модели базы данных Я создал таблицу, которая ссылается на таблицу задач, чтобы я мог создавать требования к задачам. Таким образом, я могу запускать/показывать задачи только в моем списке, когда выполняю требуемые задачи.

Модель: the model

Функциональность работает отлично, но у меня есть проблема с CakePHP способом получения переменных с вашей точкой зрения.

С родительского и дочернего ид являются одновременно [projecttasks] [projecttasks_name], последний перезаписывает первый, в результате этого на странице: the failed result

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

Теперь в коде это выглядит с точки зрения:

<?php foreach ($itemrequirements as $itemrequirement): ?> 
    <tr> 
     <td><?php echo h($itemrequirement['Projecttask']['projecttasks_name']); ?></td> 
     <td><?php echo h($itemrequirement['Projecttask']['projecttasks_name']); ?></td> 
     <td class="actions"> 
      <?php echo $this->Html->link('View',array('action' => 'detail', $itemrequirement['Itemrequirement']['itemreq_id'])); ?> 
      <?php echo $this->Html->link('Edit',array('action' => 'edit', $itemrequirement['Itemrequirement']['itemreq_id'])); ?> 
      <?php echo $this->Form->Postlink('Delete',array('action' => 'delete', $itemrequirement['Itemrequirement']['itemreq_id']), 
      null, sprintf('Are you sure you want to delete %s?', $itemrequirement['Itemrequirement']['itemreq_id'])); ?> 
     </td> 
    </tr> 
    <?php endforeach; ?> 

контроллер:

public function index() { 

    // write redirect information for screens into session 
    $this->Session->write('Redirector.controllername', 'itemrequirements'); 
    $this->Session->write('Redirector.controllerfunction', 'index'); 
    $this->Session->write('Redirector.recordindex', NULL); 

    // build index 
    $this -> Itemrequirement -> recursive = 0; 
    $this -> set('itemrequirements', $this -> paginate()); 

    // get total record count 
    $totalItemrequirements = $this -> Itemrequirement -> find('count'); 
    // expose total-count to the view 
    $this -> set('totalItemrequirements', $totalItemrequirements); 

} 

Я спросил своего босса, и он указал эту часть (файл модели). Думал, что поделюсь.

/** 
* declare BelongsTo relations 
* 
* @var array $belongsTo 
* @link http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#belongsto BelongsTo docs (CakePHP cookbook) 
*/ 
public $belongsTo = array(
    'Projecttask' => array(
     'className' => 'Projecttask', 
     'foreignKey' => 'itemreqs_rel_projectparents' 
    ), 
    'Projecttask' => array(
     'className' => 'Projecttask', 
     'foreignKey' => 'itemreqs_rel_projectchilds' 
    ) 
); 

Есть ли способ получить правильное представление? Я довольно новичок в MVC-модели и сделал большую часть своего кода, используя генератор кода, который у нас работает.

ответ

0

Просто сделать вашу модель имеет другое имя для родителя и ребенка, как это:

public $belongsTo = array(
    'ProjecttaskParent' => array(
     'className' => 'Projecttask', 
     'foreignKey' => 'itemreqs_rel_projectparents' 
    ), 
    'ProjecttaskChild' => array(
     'className' => 'Projecttask', 
     'foreignKey' => 'itemreqs_rel_projectchilds' 
    ) 
); 

Кроме того, если вы посмотрите на cake model conventions вы увидите, что у вас есть на самом деле не настроен правильно, чтобы вызвать COMPLETE торта мощность минимальной конфигурации. Он будет работать, но вам нужно будет сделать больше, чем вы должны.

+0

Мой запрос запутывается, хотя я и не знаю, где его исправить. Спасибо, в любом случае. – nlreturns

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