私はすでに存在するcakephp 1.3プロジェクトで作業しており、データベースに新しいテーブルを追加する必要がありました。私は私のコントローラでこれを持っている:CakePHP 1.3 - where句内の未知の列
$conditions = array('ShootingPlacement.person_id' => $id, 'Email.person_id' => $id, 'Email.shooting_placement_id' => 'ShootingPlacement.id');
$shootingPlacements = $this->ShootingPlacement->find('all', compact('conditions'));
そして、それは私にこのエラー与えている:
Warning (512): SQL Error: 1054: Unknown column 'Email.person_id' in 'where clause' [CORE/cake/libs/model/datasources/dbo_source.php, line 684]
そして、THSはそれを作成しようとしているクエリです:
SELECT `ShootingPlacement`.`id`, ... FROM `shooting_placements` AS `ShootingPlacement`
LEFT JOIN `people` AS `Person` ON (`ShootingPlacement`.`person_id` = `Person`.`id`)
LEFT JOIN `shootings` AS `Shooting` ON (`ShootingPlacement`.`shooting_id` = `Shooting`.`id`)
WHERE `ShootingPlacement`.`person_id` = 123688 AND `Email`.`person_id` = 123688 AND `Email`.`shooting_placement_id` = 'ShootingPlacement.id'
ORDER BY `lastname` ASC
明らかに私のコントローラコードがされます間違っていますが、ShootingPlacementに電子メールテーブルを関連付ける方法がわかりません。私のモデルは正しいと思います。これまでのところ、私が持っている場合、これは:
$conditions = array('ShootingPlacement.person_id' => $id);
$shootingPlacements = $this->ShootingPlacement->find('all', compact('conditions'));
それは射撃、ShootingPlacement人から行を取得します、私もそこにメールしたいです。電子メールにはShootinPlacementのものとPersonのものの2つの外部キーがあります。
これはモデルですが、私が作成したのは電子メールだけです。残りは正しく動作します。私は、ビュー上で必要なもの
class Email extends AppModel
{
var $name = 'Email';
var $belongsTo = array
(
'Person' => array
(
'className' => 'Person',
'foreignKey' => 'person_id'
),
'ShootingPlacement' => array
(
'className' => 'ShootingPlacement',
'foreignKey' => 'shooting_placement_id'
)
);
}
class ShootingPlacement extends AppModel
{
var $name = 'ShootingPlacement';
var $belongsTo = array
(
'Person' => array
(
'className' => 'Person',
'foreignKey' => 'person_id',
'order' => 'lastname ASC'
),
'Shooting' => array
(
'className' => 'Shooting',
'foreignKey' => 'shooting_id'
)
);
}
class Person extends AppModel
{
var $name = 'Person';
var $belongsTo = array
(
'PersonOrigin' => array
(
'className' => 'PersonOrigin',
'foreignKey' => 'person_origin_id'
)
);
var $hasMany = array
(
'ShootingPlacement' => array
(
'className' => 'ShootingPlacement',
'foreignKey' => 'person_id',
'dependent' => false
)
);
}
class Shooting extends AppModel
{
var $name = 'Shooting';
var $belongsTo = array
(
'ShootingLocation' => array
(
'className' => 'ShootingLocation',
'foreignKey' => 'shooting_location_id'
),
'Emission' => array
(
'className' => 'Emission',
'foreignKey' => 'emission_id'
)
);
}
はShootingPlacement変数をループしていると私はそれがShootingPlacementと人のその特定のIDのメール・テーブル・データを格納する必要があります(クエリで見たよう、人とShootingPlacementがありますすでに関係で、私はあまりにもメールがあることが必要)
説明とリンクをお寄せいただきありがとうございます。 –