Join 在cakephp 2.x中实现消息系统
我试图在我的Join 在cakephp 2.x中实现消息系统,join,message,foreign-key-relationship,cakephp-2.1,Join,Message,Foreign Key Relationship,Cakephp 2.1,我试图在我的cakephp框架中实现一个消息系统(用户对用户)。 因此,我创建了以下表格: 信息 身份证 头衔 身体 发送者身份证 创造 回应 向用户发送的消息 身份证 消息id 收件人id Messages_Users表用于存储每个已发送邮件的收件人。 然后像这样创建相应的模型,并建立模型之间的关系 消息模型 现在,我想在MessagesController中实现一个函数inbox(),它显示存储在数据库中的所有消息,并将这些消息发送给相应的用户。 因此,我的方法是将函数放入MessagesC
cakephp
框架中实现一个消息系统(用户对用户)。
因此,我创建了以下表格:
信息
public function inbox(){
$uid = $this->Auth->user('id');
$messages = $this->Message->find('all', array(
'conditions' => array(
'recipient_id' => $uid)
)
);
上面的函数应该通过message_id对表messages和messages_users执行连接,并选择表messages_users的user_id等于recipient_id的数据集
但我得到的只是一个错误,即在where子句中找不到列recipient\u id
如何指示find方法正确连接这些表?
我认为链接这些模型就足够了,这样蛋糕魔术就可以解决剩下的问题了。简单的回答是你的联想是错误的。长文如下: 首先,没有所谓的
hasAndBelongsTo
关联。关联名称为hasandbelongtomany
。此外,您在消息模型中建立的关联是完全错误的,或者如果我可以这样说,您可能没有正确理解它们。因此,快速修复方法是删除hasMany
到MessageUser
、belongsTo
用户
和错误的hasandblongsto
消息
,并向用户添加hasandblongstomany
关联
如果您想让消息hasandbelongomany User
只需使用它即可。怎样。此外,HABTM在这里已经讨论过很多次了,所以我不打算详细介绍它
不过,我想向您指出另一种可能的设置。现在我提出这个建议是因为我看到您也尝试使用了
hasMany
,所以可以在连接模型中使用所谓的hasMany,但通常是在您希望在连接模型中存储额外数据时使用的(在您的例子中是MessageUser)。检查 我刚刚读了你提供给HABTM协会的链接,现在我觉得很受启发!我真的很感激,谢谢!我现在的方法是设置关联:Message HABTM User。我按照cakephp链接中提供的方式重新编辑了数据库消息。现在我在想用户与消息的关联。在我看来,我认为用户有很多信息,所以我将在接下来的用户模型中实现这一点。问候
<?php
class MessageUser extends Model{
public $belongsTo = array (
'User'=>array(
'className'=>'User',
'foreignKey'=>'user_id'),
array(
'Message'=>array(
'className'=>'Message',
'foreignKey'=>'message_id')
)
);
class User extends AppModel{
public $hasAndBelongsTo = array(
'Message'=>array(
'joinTable' =>'messages_users',
'className' =>'Message',
'foreignKey' =>'recipient_id',
'associationForeignKey' =>'message_id')
);
public function inbox(){
$uid = $this->Auth->user('id');
$messages = $this->Message->find('all', array(
'conditions' => array(
'recipient_id' => $uid)
)
);