0

私は CakePHP にかなり慣れていないので、単純な webapp を構築しようとしています。

プロパティ、操作、カテゴリの 3 つのモデルがあります。

私の関係は次のとおりです。

Category -> hasMany -> Property
Operation -> hasMAny -> Property

各プロパティには、カテゴリ (cat_id) と操作 (op_id) の外部キーがあります。

私がやりたいことは、ID ではなく、カテゴリと操作の名前 (フィールドはそれぞれのテーブルの「名前」) で (対応するビューで) 各プロパティを表示することです。これどうやってするの?

アップデート:

望ましい出力の例は次のとおりです。

ID    category    operation description ....

1     House       Sell       a house   ....

私が今持っているのは

ID    category    operation description ....

 1     2          3           a house   ....

2 と 3 はそれぞれ「house」(category, cat_id) と「sell」(operation, op_id) の ID です。

これは、カテゴリ モデルのコードです。

class Category extends AppModel{
    public $hasMany = array(
    'Property'=>array(
        'foreignKey' => 'cat_id'
    ));
}

前もって感謝します。

4

2 に答える 2

0

プロパティ (id、名前、category_id、operation_id)

カテゴリ(id、名前)

操作 (id、名前)

再帰 = 1 または 2 でプロパティ テーブルを検索すると、関連するすべてのデータが自動的に取得されます。

于 2013-06-19T08:21:34.597 に答える
0

解決策を見つけました!思ったより簡単。

まず、「hasMany」の使用は理想的ではありませんでした。私がしたことは、プロパティモデルで「belongsTo」関係を使用することでした:

class Property extends AppModel{
    var $name = 'Property';
    public $belongsTo = array(
        'Category' => array(
            'foreignKey' => 'idCat'         
        ),
        'Operation' => array(
            'foreignKey' => 'idOp'              
        )
    );
}

ここでの魔法: PropertiesController で find() を実行すると、プロパティ データとそれが属するテーブルのデータを含む 2 次元配列が得られます。:

Array
(
   [Property] => Array
        (
        [id] => 1
    )
[Category] => Array
    (
        [id] => 2
        [name] => House
    )
[Operation] => Array
    (
        [id] => 3
        [name] => Sell
    )

) ビューでは、たとえば ['Property']['idCat'] の代わりに ['Category']['name'] を使用するだけで、すべてが機能します。

助けてくれてありがとう!

PS: ネイティブ スピーカーではなく、誤解を招いて申し訳ありません。

于 2013-06-19T13:04:26.170 に答える