私はツリーテーブルを持っています:
CREATE TABLE `bairros` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`cidade_id` INT(11) UNSIGNED NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `FK_bairros_cidades` (`cidade_id`),
CONSTRAINT `FK_bairros_cidades` FOREIGN KEY (`cidade_id`) REFERENCES `cidades` (`id`)
)
CREATE TABLE `cidades` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`estado_id` TINYINT(4) UNSIGNED NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `FK_cidades_estados` (`estado_id`),
CONSTRAINT `FK_cidades_estados` FOREIGN KEY (`estado_id`) REFERENCES `estados` (`id`)
)
CREATE TABLE `estados` (
`id` TINYINT(4) UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
)
私のBairrosクラスには関数があります:
public function get_by_id($bairro_id)
{
$bairro = new Bairro();
$bairro->include_related('cidade');
$bairro->include_related('estado');
return $bairro->get_by_id($bairro_id);
}
私のモデルでは、次のものがあります。
バイロ モデル:
var $has_one = array(
'cidade' => array(
'class' => 'cidade',
'other_field' => 'bairro',
'join_other_as' => 'cidade',
'join_table' => 'bairros'
)
シダード モデル:
var $has_one = array(
'estado' => array(
'class' => 'estado',
'other_field' => 'cidade',
'join_other_as' => 'estado',
'join_table' => 'cidades'
)
);
var $has_many = array(
'bairro' => array(
'class' => 'bairro',
'other_field' => 'cidade',
'join_self_as' => 'cidade',
'join_table' => 'bairros'
)
);
エスタドモデル
var $has_many = array(
'cidade' => array(
'class' => 'cidade',
'other_field' => 'estado',
'join_self_as' => 'estado',
'join_table' => 'cidades'
)
);
次のようなものを作成したい:
SELECT bairros.*, cidades.*, estados.*
FROM bairros
LEFT OUTER
JOIN cidades ON cidades.id = bairros.cidade_id
LEFT OUTER
JOIN estados ON estados.id = cidades.estado_id
WHERE bairros.id = 1;
次のメッセージが表示されます。
「バイロとエスタドを関連付けることができません。」
どうすればこれを行うことができますか?