Принадлежит отношению cakephp не работает

Я новичок в cakephp, и я последовал за некоторыми учебниками. Теперь я пытаюсь создать свое первое приложение, и я привязался к этому отношению "принадлежит". Это не работает должным образом, скорее, я делаю что-то неправильно. Итак, вот мои таблицы и мои модели и контроллеры.

Это представление, которое не показывает идентификатор или имена персонала.И это сводит меня с ума !!! , Расположен в приложении /View/Pendings/add.ctp:

<div>
 <!--?php echo $this--->Form->create('Pending'); ?>
 <fieldset>
 <legend>Nueva Tarea</legend>
 <!--?php
 echo $this--->Form->input('subject', array('label' => 'Asunto'));
 echo $this->Form->input('body', array('label' => 'Descripcion', 'rows' => '3'));
 echo $this->Form->input('staff_id', array('label' => 'Asignar a miembro'));
 ?>
 </fieldset>
 <!--?php echo $this--->Form->end('Asignar'); ?>
</div>

где staff_id является внешним ключом для этой модели Ожидание. И соответствует id в таблице сотрудников. Итак, что я пытался сделать, это Staff hasMany Pending и Pending принадлежит To Staff. Поскольку Pending является своего рода ожидающей задачей для персонала. Вот почему у персонала много повозок.

Вот модель Pending, в app/Model/Pending.php с отношением 'ownTo':

<!--?php
class Pending extends AppModel {
 public $validate = array(
 'subject' =--> array(
 'rule' => 'notEmpty', 
 'message' => 'Debe ingresar un Asunto.'
 ),
 'body' => array(
 'rule' => 'notEmpty', 
 'message' => 'Debe ingresar una Descripción.'
 )
 );

 public $belongsTo = array( 
 'Staff' => array(
 'className' => 'Staff',
 'foreignKey' => 'staff_id'
 ) 
 ); 
}
?>

Вот модель Штата, в приложении /Model/Staff.php с отношением 'hasMany':

<!--?php
class Staff extends AppModel {
 public $displayField = 'name';
 public $validate = array(
 'last_name' =--> array(
 'rule' => 'notEmpty'
 ),
 'name' => array(
 'rule' => 'notEmpty'
 ),
 'passwd' => array(
 'rule' => 'notEmpty'
 ),
 'email' => array(
 'rule' => 'notEmpty'
 )
 );

 public $hasMany = array( 
 'Pending' => array( 
 'className' => 'Pending',
 'foreignKey' => 'staff_id'
 )
 );
}
?>

и, наконец, мои две таблицы, штабы и подвески

mysql> describe staffs;
+-----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+----------------+
| name | varchar(40) | NO | | NULL | |
| last_name | varchar(40) | NO | | NULL | |
| email | varchar(40) | NO | | NULL | |
| password | varchar(20) | YES | | NULL | |
| active | *******(1) | YES | | 1 | |
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| created | datetime | YES | | NULL | |
| modified | datetime | YES | | NULL | |
+-----------+------------------+------+-----+---------+----------------+

mysql> describe pendings;
+----------+------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| staff_id | int(10) unsigned | YES | MUL | NULL | |
| created | datetime | NO | | NULL | |
| pdate | datetime | YES | | NULL | |
| subject | varchar(250) | YES | | NULL | |
| body | tinytext | YES | | NULL | |
| state | enum('pending','done','reasigned') | YES | | pending | |
+----------+------------------------------------+------+-----+---------+----------------+

Я думаю, что я следил за конвенциями по трюкам. Я действительно не вижу своей ошибки. Большое спасибо за Вашу помощь.

К сожалению, вот контроллер (приложение/Контроллер/PendingsController.php):

<!--?php
class PendingsController extends AppController{

 public function index(){
 $this--->Pending->recursive = 0;
 $this->set('pendings', $this->paginate());
 }

 public function add(){
 if( $this->request->is('post') )
 {
 if( $this->Pending->save($this->request->data) )
 {
 $this->Session->setFlash('Tarea Asignada');
 $this->redirect(array('action' => 'index'));
 }
 }
 $staffs = $this->Pending->Staff->find('list');
 }
}
?>
1 ответ

Торт магии работает... с условием...

Вы правы, думая, что, возможно, из-за правильной установки отношений с образцом, это должно просто работать. Но вам не хватает одной части: передача списка в представление. Эта часть не волшебна.

Прочтите эту часть документов (почти полностью вниз до начала inputs)

Если вы хотите создать поле select при использовании атрибута belongsTo - или hasOne - Relation, вы можете добавить следующее [...]

(и теперь класть то, что вы должны положить...)

$this->set('staffs', $this->Pending->Staff->find('list'));

Замечания: обратите внимание на имя переменной, является моделью во множественном числе. И затем вы помещаете список этой переменной.

И, по мнению, вы делаете то, что делаете

echo $this->Form->input('staff_id', array('label' => 'Asignar a miembro'));

И вы должны это сделать :)

[РЕДАКТИРОВАТЬ] Просто видел последнее редактирование. Вам не хватает

$this->set('staffs', $staffs);
//or
$this->set(compact('staffs'));

licensed under cc by-sa 3.0 with attribution.