是否有在Cake中创建一元关联的快捷方式?
例如,用户是另一个用户的朋友。如果我以艰难的方式尝试并自己编写关联代码,我很确定它会违反蛋糕的约定。
Cake有HABTM:
var $hasAndBelongsToMany = array(
'User' =>
array(
'className' => 'User',
'joinTable' => 'friends',
'foreignKey' => 'user_id',
'associationForeignKey' => 'friend_id',
'unique' => true
)
);
这会有用吗?与另一个用户模型关联的用户模型。
更新 我现在如何保存数据?
$this->data["Friend"] = $request["Requester"];
$this->data["Admirer"] = $request["Requestee"];
$this->Friend->create();
$this->Friend->save($this->data);
$ request [“Requester”]和$ request [“Requestee”]都持有User类型的对象。 HABTM rel在用户模型中定义
var $hasAndBelongsToMany = array(
'Friend' => array(
'className' => 'Friend',
'joinTable' => 'friends',
'foreignKey' => 'user_id',
'associationForeignKey' => 'id'
),
'Admirer'=>array(
'className'=>'Friend',
'joinTable'=>'friends',
'foreignKey' => 'friend_id',
'associationForeignKey' => 'id',
)
);
所有这一切都是$ data-> [“Friend”]的id存储在friends表的id列中
答案 0 :(得分:3)
以下是我在示例应用程序中使用的解决方案
需要两个表,用户和关注者。重要的字段是User-> id,Follower-> user_id,Follower-> friend_id。
我希望这段代码有所帮助。
<?php class User extends AppModel { public $useTable='users'; public $hasAndBelongsToMany=array( 'Friend'=>array( 'className'=>'User', 'joinTable'=>'followers', 'foreignKey' => 'user_id', 'associationForeignKey' => 'friend_id', ), 'Admirer'=>array( 'className'=>'User', 'joinTable'=>'followers', 'associationForeignKey' => 'friend_id', 'foreignKey' => 'user_id', ), ); }
-teh
答案 1 :(得分:1)
比约,
他询问用户habtm用户......你的联接表应该是users_users,关系应该是这样的
var $hasAndBelongsToMany = array(
'Friend' =>
array(
'className' => 'UserUser',
'joinTable' => 'users_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'friend_id',
'unique' => true
)
);
我认为应该做的伎俩
答案 2 :(得分:0)
在CakePHP中,您的模型中有几个变量可用,例如$ hasMany,$ belongsTo和$ hasAndBelongsToMany。请阅读食谱以获得进一步的解释.. http://book.cakephp.org/view/78/Associations-Linking-Models-Together。
在您的示例中,我认为您需要HABTM。