2011-01-07 7 views
0

私はHasMany-BelongsTo関係を持つ2つのデータベーステーブル、家と資産を持っています。私のCakePHPは関係ですか空白のエントリを作成しますか?

最近まで、すべての資産は1つのホームに属していました。これは最近複雑になっています。現在、一部の資産は不動産業者または家屋ではなく地域に属しています。

今日私は私の家のテーブルに表示される数十の空白のエントリを見てきました。彼らが新しい資産の結果であり、家に接続されておらず、救われていることは、ほぼ確実なようです。

資産モデルのBelongsTo Home関係がこれらの空白エントリの作成を強制している可能性はありますか? (あるいは別の考えられる理由があるのだろうか?)もしそれが関係であれば、関係を変更する素早い方法があるので、資産の生成は新しいものを生成することと引き合いに行くことができるホームエントリー?

EDITED:ここでは、モデル間の現在の関係は以下のとおりです。

資産:

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')); 
+0

あなたは間違った関係があり、あなたの関係コードを投稿に投稿します。 – Ish

+0

@Ishクマール:モデル関係で編集。あなたが私の問題の特定の原因を見つけるために私に与えることができるどんな助けも大いに評価されるでしょう! – thesunneversets

答えて

0

あなたはARCの関係として知られているものを持っているように聞こえます。つまり、複数のリレーションシップを持つアセットテーブルが1つあります。上記で説明したように、Assetsテーブルには、家、不動産、地域の3つの異なるテーブルに属するデータが含まれているようです。私の経験では、ケーキはARC関係をうまく処理しません。私のアドバイスは、複数の資産のテーブルを作成することです

home_assets 
realtor_assets 
region_assets 

一見すると、あなたはこれがキルを超えていると思うかもしれません。しかし、シンプルさという点では、これが最良の方法です。

単一のテーブルを使用できますが、もう少し作業が必要です。単一のアセットテーブルを実際に使用する場合は、まだ追加していないカラム(タイプ)を追加する必要があります。次に、データを保存する内容(住宅、不動産、または地域)に応じて、各保存前に資産にタイプを追加する必要があります。

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

+0

ああ、関係は混乱している(私の防衛では、私が近づく前にそれらの多くが適所にあった!)資産テーブルには、home_num、realtor_num、およびkiosk_numフィールドがある。所有。物事をまったく別のやり方で、それぞれの資産は、HasMany Landmarksに所属するHasOne "Landmark"に属します。おそらくランドマークには、他の方法ではなく、1つの資産があるはずですか?すべてのリファクタリングの見通しは非常に脅威です。私はどんな場合でもモデル関係で質問を更新します... – thesunneversets

関連する問題