我有2个模型个人资料和消息。当我尝试在其控制器中获取所有消息时,cake不会返回结果数组中的任何配置文件。 在消息控制器中:
$this->Message->recursive=3;
$m=$this->Message->find('all');
型号:
class Message extends AppModel {
var $name = 'Message';
var $primaryKey = 'id';
var $useTable = 'messages';
var $belongsTo = array(
'Profile' => array(
'className' => 'Profile',
'foreignKey' => 'author_id',
'conditions' => '',
'fields' => '',
'order' => ''
));
和
class Profile extends AppModel {
var $name = 'Profile';
var $primaryKey = 'id';
var $useTable = 'profiles';
var $belongsTo = array(
'Account' => array(
'className' => 'Account',
'foreignKey' => 'account_id',
'conditions' => '',
'fields' => '',
'order' => ''
));
var $hasMany = array(
'Message' => array(
'className' => 'Message',
'foreignKey' => 'Author_id',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
));
P.S。我不能等待7个小时的答案选项。 我最终找到了解决方案,我的消息模型文件名是messageS.php,一旦我将其重命名为message.php,就得到了我需要的一切。我帮助了一个人
答案 0 :(得分:0)
根据您的回答(但也与其他人相关),如果您非常确定您的关联是正确的,则下一步是检查您的文件名以确保他们fit the conventions(奇异模型)。< / p>
另一个注意事项,如果你使用递归3,(不知道它高于2,但显然确实如此),你可能最好使用CakePHP的Containable Behavior。即使使用2的递归通常也是过度的。
答案 1 :(得分:0)
写入Message.php模型文件:
var $ belongsTo = array(
'个人资料'=&gt;阵列(
'className' => 'Profile',
'foreignKey' => 'author_id',
'conditions' => '',
'fields' => '',
'order' => ''
));
在Profile.php模型文件中写入:
var $ hasMany = array(
'讯息'=&gt;阵列(
'className' => 'Message',
'foreignKey' => 'Author_id', // Hear you "Author_id" should change as "author_id"
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
));
<强>控制器:强>
$ M = $这 - &GT; MESSAGE-&GT;发现( '全部');
现在它的工作正常......享受..