0

私はツリーテーブルを持っています:

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;

次のメッセージが表示されます。

「バイロとエスタドを関連付けることができません。」

どうすればこれを行うことができますか?

4

1 に答える 1

0

解決済み:

$pedido->include_related('cidade/estado');

したがって、正しく動作します。ありがとう

于 2013-08-26T14:19:50.297 に答える