Ich habe zwei Modelle in einer hasMany/belongsTo-Beziehung verknüpft. Hier ist die hasMany Definition:CakePHP: Verbundene Tabellendaten, die in der Ansicht nicht angezeigt werden
//Table hr_emp_ids. Each employee can have many HR cases.
public $hasMany = array(
'HrCase' => array(
'className' => 'HrCase',
'foreignKey' => 'emp_user_id'
)
);
Und hier ist die belongsTo Definition:
//Table hr_cases. Each HR case is owned by an employee.
public $belongsTo = array(
'HrEmpId' => array(
'className'=> 'HrEmpId',
'foreignKey' => 'emp_user_id'
);
Der Controller für meine Ansicht ist tot einfach:
public function view($id = null) {
$this->HrCase->id = $id;
if (!$this->HrCase->exists()) {
throw new NotFoundException(__('Invalid Case ID'));
}
$options = array('conditions' => array('HrCase.' . $this->HrCase->primaryKey => $id));
$this->set('case', $this->HrCase->find('first', $options));
}
Alles, was ich bin versucht zu tun Zeigt das hire_date und ssn aus der Tabelle hr_emp_ids basierend auf hr_cases.emp_user_id = hr_emp_ids = emp_user_id an. Hier ist die Ansicht Code:
<tr>
<td><strong>Employee: </strong><br><?php echo h($case['HrCase']['full_name']); ?></td>
<td><strong>Date of Hire: </strong><br><?php echo h($case['HrEmpId']['hire_date']); ?></td>
<td><strong>SSN: </strong><br><?php echo h($case['HrEmpId']['ssn']); ?></td>
Tabellenstrukturen:
desc hr_emp_ids;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| hire_date | date | YES | | NULL | |
| ssn | varchar(11) | NO | | NULL | |
| emp_user_id | int(11) | NO | | NULL | |
+-------------+-------------+------+-----+---------+----------------+
desc hr_cases; (truncated)
+--------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| emp_user_id | int(11) | NO | | NULL | |
Nichts von dem HrEmpId Modell wird angezeigt. Ich bin mir nicht sicher, was ich hier falsch mache. Ich habe solche Assoziationen Dutzende Male ohne Probleme gemacht. Was könnte ich vermissen?
Guten Rat zur Verwendung von findById(). Außerdem wurde Verhalten zu relevanten Modellen hinzugefügt. Die Controller-Anweisung sieht nun so aus: '$ options = array ($ this-> HrCase-> findById ($ id), 'contain' => array ('HrEmpId'));' Unglücklicherweise, wenn ich HrEmpId debugge, ist das Array leer. Immer noch ratlos! – Chris
Welche Version von Kuchen verwendest du? – bill
Wir sind auf Version 2.0.5. – Chris