1

私が何時間も前から立ち往生している簡単な質問:

私の CakePHP Web サイト プロジェクト (バージョン 2.0 を使用) には、2 つのモデルがあります。それらは少しわかりにくいので、モデルを標準のブログ投稿モデルに変換します。

だから私は「投稿」モデルとそれらの多くの「カテゴリ」を持っています。

class Post
$belongsTo = 'Category'

class Category
$hasMany = 'Post'

ここまでは順調ですね。ここで、すべてのカテゴリに 1 つ (必須) の「メイン ポスト」が必要です。

それをどのように関連付けますか?

  • 別の「MainPost」モデル?投稿と同じ内容になるため、冗長に思えます。
  • 投稿にブール値の「is_main」列がありますか? 各カテゴリの 1 つの投稿のみが「メイン」になることが許可されているため、正しくないようです。
  • カテゴリの「mainpost_id」列? 良さそうに聞こえますが、「$belongsTo」は、外部キーを現在のクラスに含めることを許可する唯一の関連付けです。そして、逆もまた真であるのにカテゴリーが Post に属すると言うのは、私には間違っているように思えます。また、 belongsTo は多対 1 の関連付けであり、私が望むのは一種の 1 対 1 の関連付けです。

助けてください、[名前を挿入]。あなたは私の唯一の希望です。;)

編集:「hasOne」関係を持ち、外部キーを $hasOne X と同じクラスに持ち、標準の他のクラスには持たない方法があれば素晴らしいと思います。

4

2 に答える 2

1

これが1つの解決策です:

[ categories ]
id
name
mainpost_id

[ posts ]
id
category_id
title
text
  • カテゴリhasManyPost _
  • 投稿belongsToカテゴリ
  • カテゴリhasOneMainPostコードを参照
于 2011-12-16T21:39:46.823 に答える
0

hasAndBelongsToMany 関係を使用していると思います....このリンクで詳細を参照してくださいhttp://book.cakephp.org/2.0/en/models/associations-linking-models-together.html

于 2011-12-15T19:40:15.003 に答える