Frage

Ich habe zwei Datenbanktabellen, Häuser und Assets mit einer HasMany-Beziehung Gehört.

Bis vor kurzem gehörte jedes Vermögen ein Heim. Dies ist komplexer geworden in letzter Zeit. Jetzt einige Assets gehören zu einer Makler oder einer Region anstelle eines Home

Heute Ich habe Dutzende von leeren Einträgen erscheinen in meiner Heimtabelle zu sehen. Es scheint fast sicher, dass sie das Ergebnis neuer Assets sind, die zu einem Heim nicht verbunden sind, gespeichert werden.

Ist es wahrscheinlich, dass die Gehört Heim Beziehung in dem Asset-Modell, um die Schaffung dieser leeren Einträge zwingt? (Oder gibt es eine anderen wahrscheinlichen Grund?) Wenn es die Beziehung ist, gibt es eine schnelle Möglichkeit, die Beziehung zu modifizieren, so dass die Erzeugung eines Vermögens kann, aber notwendig, nicht muß, Hand in Hand geht mit einem neuen Erzeugung Startseite Eintrag?

EDITED : Hier sind die aktuellen Beziehungen zwischen den Modellen:

Vermögen:

var $belongsTo = array(
   'Home' =>array('className' => 'Home', 'foreignKey' => 'home_num'));

var $hasOne = array(
   'Landmark' =>array('className' => 'Landmark', 'foreignKey' => 'asset_num',
              'dependent' => true ));

Home:

var $hasOne = array('HighlightImage' => array(
    'className'     => 'Asset',
    'conditions'    => 'highlight_image = TRUE',
    'order'         => '',
    'foreignKey'    => 'home_num',
    'dependent'     => false,
    'exclusive'     => false,
    'finderQuery'   => ''));

var $hasMany = array('Assets' => array(
    'className'     => 'Asset',
    'conditions'    => '',
    'order'         => '(Assets.title + 0 ) ASC',
    'limit'         => '200',
    'foreignKey'    => 'home_num',
    'dependent'     => false,
    'exclusive'     => false,
    'finderQuery'   => ''));

Orientierungspunkt:

var $belongsTo = array(
    'Assets' => array(
        'className' => 'Asset',
        'foreignKey' => 'asset_num'),
'Regions' =>array(
        'className' => 'Region',
        'foreignKey' => 'region_num'));

Region:

var $hasMany = array('Landmarks' => array(
     'className' => 'Landmark',
     'foreignKey' => 'region_num'));
War es hilfreich?

Lösung

Es klingt wie Sie haben, was Know als ARC-Beziehung ist. Das heißt, Sie haben eine Asset-Tabelle, die mehrere Beziehungen hat. Wie Sie oben beschreiben, so scheint es, dass jetzt die Assets Tabellendaten enthalten, die zu drei verschiedenen Tabellen gehören kann: Häuser, Realtors oder Regionen. Nach meiner Erfahrung, Kuchen behandeln Beziehungen ARC nicht sehr gut.

Mein Rat ist, mehrere Asset-Tabellen zu erstellen:

home_assets
realtor_assets
region_assets

Auf den ersten Blick können Sie denken, dies über töten ist. Doch in Bezug auf Einfachheit, dies ist der beste Weg, es zu tun.

Sie können eine einzelne Tabelle verwenden, aber es erfordert ein wenig mehr Arbeit. Wenn Sie wirklich eine einzelne Asset-Tabelle verwenden möchten, müssen Sie eine zusätzliche Spalte (Typ) hinzufügen, wenn Sie nicht bereits haben. Dann müssen Sie die Art des Vermögenswertes hinzuzufügen, bevor jeder sparen, je nachdem, was die Daten speichert: zu Hause, Makler oder Region.

Wenn Sie eine Probe des Codes zur Verfügung stellen Sie verwenden (für zu Hause, Immobilienmakler und Region), wie es auf Vermögenswerte bezieht, wäre es leichter zu diagnostizieren sein. Betrachten pastebin.com Verwendung als ich der Codesatz annehmen kann ziemlich groß.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top