我有树表:
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'
)
Cidade 型号:
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;
我收到这条消息:
“无法将 bairro 与 estado 联系起来。”
我怎么能这样做?