-
26-09-2019 - |
質問
デフォルトのcakephp形式にないモデルがいくつかあります
user(id、name ....)
1 Harsha ...
2 John ....
料理(ID、名前、価格...)
1 "Cheese Pizza" 6
2 "Zinger Burger" 3
レストラン(ID、名前、.....)
1 "KFC" ...
2 "Pizza Hut" ...
モジュール(ID、名前)値(ユーザー、料理、レストラン)
1 "Users"
2 "Dishes"
3 "Restaurant"
アイテム(id、module_id、item_id)
1 1 1 (refers to User Harsha)
2 3 2 (refers to Pizza hut)
3 2 2 (refers to Zinger Burger)
4 1 2 (refers to User John)
item_idは、module_idに応じてユーザー、皿、または休憩のIDを指します
レビュー(id、parent_id、review、time、item_id、commenter_id)
1 0 "Best Burger in the world" "time" 3 1 (refers to Harsha reviewing Zinger Burger)
2 1 "Yes i love Zingers tooo" time 3 2 ( refers to John replying to Harsha's Review)
私はcakephpで関係を作成する方法について少し混乱しています
解決
このページの本で: http://book.cakephp.org/view/1039/associations-linking-models-together あなたは関係に設定できる可能性のある鍵へのガイドを見つけるでしょう。
foreignkey:他のモデルで見つかった外部キーの名前。これは、複数のハソロン関係を定義する必要がある場合に特に便利です。このキーのデフォルト値は、「_ID」で接尾辞が付いた現在のモデルのアンダースコアの特異な名前です。上記の例では、デフォルトで「user_id」になります。
レビューとアイテムが彼らの協会の子供であると仮定すると、関係の両端について、あなたはforeignkeyを「item_id」として設定するでしょう。
何かのようなもの:
dishes:
class Dish extends AppModel {
var $name = 'Dish';
var $hasMany = array(
'Item' => array(
'className' => 'Item',
'foreignKey' => 'item_id',
...
items:
class Item extends AppModel {
var $name = 'Item';
var $belongsTo = array(
'Dish' => array(
'className' => 'Dish',
'foreignKey' => 'item_id',
...
),
'Restaurant' => array(
'className' => 'Restaurant',
'foreignKey' => 'item_id',
...
より正確にすることは困難ですが、データモデルを提供していません。モジュールを介してモデルの選択を処理するには、モデルにコードをどこかに記述する必要があります。これは、データへのアクセス方法に依存します。
しかし、データベースを再構築するのに良い時期のように見えます!