Cakephp :模型递归失败
我一直在为一个非常恼人的问题头疼。我有两个模型课:Cakephp :模型递归失败,cakephp,model,associations,Cakephp,Model,Associations,我一直在为一个非常恼人的问题头疼。我有两个模型课: class User extends AppModel { var $name = 'User'; var $hasMany = array( 'Application' => array( 'className' => 'Application', 'foreignKey' => 'user_id', 'dependent
class User extends AppModel {
var $name = 'User';
var $hasMany = array(
'Application' => array(
'className' => 'Application',
'foreignKey' => 'user_id',
'dependent' => false,
)
);
}
class Application extends AppModel {
var $name = 'Application';
var $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
)
);
}
我想拉应用程序和与之相关联的用户字段
$this->Applications->find();
无论我将$recursive设置为什么,它仍然只提供一个输出:
Array
(
[Applications] => Array
(
[id] => 1
[user_id] => 3
[datecreated] =>
[status] =>
[source] => 1
)
)
另一方面,当我从Users表中提取递归设置为2的数据时,我会得到所有用户及其应用程序,以及与应用程序关联的用户数据和与用户关联的应用程序。简单地说,我得到的是:
Array
(
[0] => Array
(
[User] => Array
(
[id] => 3
[email] => email@email.email
[password] => hashstring
[socialsecurityno] => 21232134123
[role_id] => 3
[firstname] => Firstname
[lastname] => Lastname
[status] => 1
)
[Application] => Array
(
[0] => Array
(
[id] => 1
[user_id] => 3
[datecreated] =>
[status] =>
[source] => 1
[User] => Array
(
[id] => 3
[email] => email@email.email
[password] => hashstring
[socialsecurityno] => 21232134123
[role_id] => 3
[firstname] => Firstname
[lastname] => Lastname
[status] => 1
[Application] => Array
(
[0] => Array
(
[id] => 1
[user_id] => 3
[datecreated] =>
[status] =>
[source] => 1
)
)
)
)
)
)
)
我想要的是从应用程序中获取相关的用户信息,就这样。除了在应用程序和用户之间创建habtm关系,我几乎没有什么想法,这在技术上是不正确的,因为一个用户可以有多个应用程序,但一个应用程序只有一个用户
现在,应用程序通过应用程序表中的user_id与用户连接,这。。。应该有点明显,但无论如何可能都应该注意
任何形式的帮助都值得感谢,我真的没有主意。如果调用
Model::find
时没有参数,Cake会将其视为您提出了以下请求:
Model::find('first',array('limit'=>1));
这解释了为什么它只检索第一个应用程序。要检索所有应用程序,请修改对以下内容的调用:
$this->Application->find('all');
这并不能解释为什么Model::find
忽略了模型的递归设置,事实上,我找不到一种方法来重现这个问题,除非这很愚蠢,比如在设置递归级别时键入了模型名(例如$This->Applications->recursive=1;
;请注意“申请”)
希望这能有所帮助。问题不在于检索多个应用程序,我完全知道查找需要一个参数来检索多个应用程序。数据库中只有一个应用程序用于测试。问题在于检索关联的模型。不过,我将仔细分析每一种可能的情况,我可能做错了,并且如果我能找到什么。