CakePHP无法链接模型中2个表中的数据
我在使用cakePHP链接聊天视图中表用户的名字等数据时遇到问题。下面是我的代码,无论我做什么,脚本都不会从chats数据库表中选择用户名来显示名字。我一定是在监督什么,但我思考的这个循环让我有些头疼。有人能帮我脱离这个圈子吗 User.phpCakePHP无法链接模型中2个表中的数据,php,mysql,cakephp,Php,Mysql,Cakephp,我在使用cakePHP链接聊天视图中表用户的名字等数据时遇到问题。下面是我的代码,无论我做什么,脚本都不会从chats数据库表中选择用户名来显示名字。我一定是在监督什么,但我思考的这个循环让我有些头疼。有人能帮我脱离这个圈子吗 User.php <?php class User extends AppModel { public $hasMany = array( 'Ondutylog', 'Chat' ); } ?> 您需要
<?php
class User extends AppModel {
public $hasMany = array(
'Ondutylog',
'Chat'
);
}
?>
您需要在控制器中为模型充电
class ChatsController extends AppController {
public function view() {
$this->loadModel('User');
$this->loadModel('Chat');
$chats = $this->Chat->find('all', array(
'order' => array('id' => 'ASC'),
'recursive' => -1
));
$this->set('chats', $chats);
$id = $chats['Chat']['user_id'];
$userdetails = $this->Chat->User->find('first', array(
'conditions' => array(
'id' => $id
),
recursive => -1
));
$this->set(compact('userDetails'));
}
}
改变
到
您应该设置视图变量,而不是返回信息
但是,为什么要对它进行单独的查询,而不是仅使用“recursive”=>0,它将通过表联接获取关联的用户记录,并且您可以在视图中使用$chat['user']['firstname']
还可以去掉var$uses=array'User','Chat';。不需要$此->聊天已可用,并且用户模型通过关联作为$this->聊天->用户访问,正如您已经做的那样 我找到了解决办法,而且比我自己想象的更接近。因为模型用户和聊天已经加入,我只需要在控制器中使用几行。所以我把它改成这样:
public function view() {
$chats = $this->Chat->find('all');
$this->set('chats', $chats);
}
没有更多…Error:syntax Error,意外的“$this”T_变量,期望loadmoduletrized行的函数T_函数,但无法使其工作:未定义索引中的get Error$id$id=$chats['Chat']['user_id'];您好,Widrogo,我已经用$chatsok中返回的数组更新了问题,我看不出问题所在,因为您正在使用foreach所需的数据数组来获取聊天的勇气,但应该是$id=$chats[0]['Chat']['user_id'];->如果您想要数组中的第一个id,但我看不到获取第一个值的数组数据的编号,当我按照您答复的最后一部分进行操作时,我得到:SQL查询:选择Chat.id、Chat.user\u id、Chat.text、Chat.created、Chat.modified、user.id、user.firstname、user.lastname、user.email、user.password、user.picture、,User.company、User.adminrole、User.onduty、User.lastlogin、User.created、User.modified从c0captainslog.chats作为聊天室左侧加入c0captainslog.users作为聊天室上的用户。User\u id=User.id,其中1=1按id订购,如果我使用$this->setcompact'userDetails';我将如何使用返回的详细信息?我相信您可以自己弄清楚如何使用数组:很抱歉,在这种情况下,我不能使用,因为数组已返回OK,但它没有从用户表中找到匹配的数组
<?php
foreach($chats as $chat) :
echo "<tr>";
echo "<td>".$userdetails['User']['firstname']."</td>";
echo "<td>".$chat['Chat']['user_id']."</td>";
echo "<td>".$chat['Chat']['text']."</td>";
echo "<td>".$chat['Chat']['created']."</td>";
echo "</tr>";
endforeach
?>
[Chat] => Array
(
[id] => 1
[user_id] => 11
[text] => hello
[created] => 2014-05-21 19:56:16
[modified] => 2014-05-21 19:56:16
)
class ChatsController extends AppController {
public function view() {
$this->loadModel('User');
$this->loadModel('Chat');
$chats = $this->Chat->find('all', array(
'order' => array('id' => 'ASC'),
'recursive' => -1
));
$this->set('chats', $chats);
$id = $chats['Chat']['user_id'];
$userdetails = $this->Chat->User->find('first', array(
'conditions' => array(
'id' => $id
),
recursive => -1
));
$this->set(compact('userDetails'));
}
}
return $userdetails;
$this->set(compact('userDetails'));
public function view() {
$chats = $this->Chat->find('all');
$this->set('chats', $chats);
}