0

HasMany-BelongsTo関係を持つ2つのデータベーステーブル、HomesとAssetsがあります。

最近まで、すべてのアセットは1つのホームに属していました。これは最近より複雑になりました。現在、一部のアセットは、ホームではなく不動産業者または地域に属しています。

今日、Homesテーブルに何十もの空白のエントリが表示されています。それらが、ホームに接続されていない新しいアセットが保存された結果であることはほぼ確実のようです。

AssetモデルのBelongsToHome関係が、これらの空白のエントリの作成を強制している可能性がありますか?(または、別の考えられる理由がありますか?)それが関係である場合、アセットの生成が新しい生成と連携して実行できるように、関係を変更する簡単な方法はありますか?ホームエントリー?

編集済み:モデル間の現在の関係は次のとおりです。

資産:

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

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

家:

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'   => ''));

ランドマーク:

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

領域:

var $hasMany = array('Landmarks' => array(
     'className' => 'Landmark',
     'foreignKey' => 'region_num'));
4

1 に答える 1

0

ARC関係として知られているものがあるようです。これは、複数の関係を持つ1つのアセットテーブルがあることを意味します。上で説明したように、Assetsテーブルには、Homes、Realtors、またはRegionsの3つの異なるテーブルに属することができるデータが含まれているようです。私の経験では、ケーキはARC関係をうまく処理しません。

私のアドバイスは、複数のアセットテーブルを作成することです。

home_assets
realtor_assets
region_assets

一見すると、これはやり過ぎだと思うかもしれません。ただし、単純さの観点から、これはそれを行うための最良の方法です。

1つのテーブルを使用できますが、もう少し作業が必要です。本当に単一のアセットテーブルを使用する場合は、まだ追加していない場合は、列(タイプ)を追加する必要があります。次に、データを保存しているもの(自宅、不動産業者、地域)に応じて、各保存の前にアセットにタイプを追加する必要があります。

資産に適用されるコードのサンプル(住宅、不動産業者、地域向け)を提供すると、診断が容易になります。コードセットがかなり大きいと思うので、pastebin.comの使用を検討してください。

于 2011-01-07T16:17:57.570 に答える