別のフィールド名をリンクとして使用して、2 番目のレベルから値を取得できません。
アシテンシア モデル:
var $belongsTo = array('Employee');
ホラリオモデル:
var $belongsTo = array('Employee');
従業員モデル:
var $hasMany = array(
'Horario' => array(
'foreignKey' => 'employee_id',
'dependent' => true
),
'Asistencia' => array(
'foreignKey' => 'employee_id',
'dependent' => true
)
);
サンプル レコードでこれらの値を使用して説明します。
Asistencia: employee_id = 3701
Employee : id = 3701
Asistencia の find() では、Employee の primaryKey を適切に切り替えることで、Employee を含めることができます。
$this->Asistencia->Employee->primaryKey = 'id';
$this->paginate = array(
'contain' => array(
'Employee' => array(
'foreignKey' => 'employee_id',
//'fields' => array('id', h('emp_ape_pat'), h('emp_ape_mat'), h('name')),
'Horario' => array(
'foreignKey' => 'employee_id',
//'fields' => array('id' )
))
),
'conditions' => $conditions,
'order' => 'Asistencia.employee_id');
ただし、私の Horario レコードは、別のフィールド emp_appserial を介して Employees にリンクされています。
Employee : emp_appserial = 373
Horario : employee_id = 373
Employee 配列に Horario 配列を含めるにはどうすればよいですか? (これらは、前述の値を共有しています)。
現在、Horario コンテンツは Asistencia.employee_id および Employee.id (3701) の値を使用しています。(sql_dumpをチェックし、Horarioを取得しようとしています
"WHERE `Horario`.`employee_id` = (3701)"
ただし、Employee に Horario を含めるには、Employee.emp_appserial および Horario.employee_id (373) の値を使用する必要があります。
これは私が得るものです(下部の空の配列)
array(
(int) 0 => array(
'Asistencia' => array(
'id' => '5',
'name' => null,
'employee_id' => '3701',
'as_date' => '2012-11-19',
),
'Employee' => array(
'id' => '3701',
'emp_appserial' => '373',
'emp_appstatus' => '8',
'AgentFullName' => '3701 PEREZ LOMELI JORGE LORENZO',
'FullNameNoId' => 'PEREZ LOMELI JORGE LORENZO',
'Horario' => array()
)))
注意してください:
'employee_id' => '3701', (Asistencia)
と
'emp_appserial' => '373', (Employee)
私の Horario には 'employee_id' = 373 があります。
リレーション Employee<->Horario が emp_appserial に基づくように切り替えるにはどうすればよいですか? よろしくお願いします。