我是新蛋糕(并喜欢它),但我遇到了一个我似乎无法找到解决方案的问题。我很确定有一个明显的答案,所以如果我问一个愚蠢的问题我会提前做好准备。
好的,到此为止。
我正在尝试使用Cake PHP版本2构建一个简单的消息系统。
我目前有两个模型,一个处理用户(用于登录和退出),另一个处理消息。
在消息表中,我有以下列:
id | sender_id | recipient_id | subject | body
我的MessagesController.php内容如下:
class MessagesController extends AppController {
public function recent_messages() {
if (empty($this->request->params['requested'])) {
throw new ForbiddenException();
}
return $this->Message->find(
'all'
);
}
}
我的视图位于我的元素中,因为它实际显示为导航栏中的下拉列表。以下是我的观点:
<?php
$messages = $this->requestAction('/messages/recent_messages');
?>
<?php
foreach ($messages as $message): ?>
<li>
<a href="#">
<div> <strong>Username of sender goes Here</strong></div>
<div><?php echo $message['Message']['subject']; ?></div>
</a>
</li>
<li class="divider"></li>
<?php endforeach; ?>
我想要做的是能够使用sender_id获取邮件发件人的实际用户名。只是为了澄清sender_id值实际上是users表中用户的id(主键)。
最初我认为这可以通过设置关联来完成,但我不知道如何。
如果有人可以就此提出任何建议,我将非常感激。
答案 0 :(得分:1)
我不明白你为什么使用$ this-&gt; requestAction
如果您的视图是recent_messages.ctp,那么您已经调用了recentMessages()。
然后,如果您设置了关系,那么您已经在检索所需的所有数据
$message['Sender']['username']
包含您要查找的信息。 (或$message['User']['username']
这取决于你如何编写模型。)
如果没有阅读关于设置关系的Manual。
简而言之,您在Message模型中所要做的就是
$belongsTo = array(
'Sender' => array(
'className' => 'User',
'foreignKey' => 'sender_id'
)
)
答案 1 :(得分:0)
进一步思考。
您似乎正在从视图中执行requestAction。我认为它只能从控制器完成,然后通过$ this-&gt; set('messages',$ message)命令将结果传递给视图。
如果我误解了你在做什么,那我很抱歉。