好的,我有点失落......
我是PHP的新手,我正在尝试将CakePHP用于我的网站 我的DB由两个表组成:
我有匹配的CakePHP元素:
我在用户模型和复制模型之间添加了hasMany关系,见下文。
var $hasMany = array(
'Copy' => array(
'className' => 'Friendship',
'foreignKey' => 'user_id'
)
);
如果没有关联,则users表上的每个find()查询都运行良好,但在将hasMany添加到模型后,对用户的相同find()查询停止工作(print_r不显示任何内容),并且每个查找()查询我正在申请复制模型
$copy = $this->User->Copy->find('all', array(
'condition' => array('Copy.user_id' => '2')
));
忽略条件部分,只返回整个数据库。
如何调试代码执行?当我添加debug($var)
时,没有任何反应。
答案 0 :(得分:1)
我不是专家,但您可以从以下提示开始:
$this->set('users', $users);
将模型中的任何信息传递给视图,并在<pre></pre>
块答案 1 :(得分:1)
我认为主要问题是:
'condition' => array('Copy.user_id' => '2')
应该是“条件”。
另外,坚持命名约定。谢天谢地,Cake允许你覆盖几乎所有的假设名称,但是默认情况下更容易做到他们期望的事情。
id
UsersController
答案 2 :(得分:1)
首先,尝试尽可能遵循CakePHP惯例。
var $hasMany = array(
'Copy' => array(
'className' => 'Friendship',
'foreignKey' => 'user_id'
)
);
您的关联名称是'复制',这是一个不同的表和模型,然后在您的类名上,您有'友谊'。
为什么不
var $hasMany = array(
'Copy' => array('className'=>'Copy')
);
或
var $hasMany = array(
'Friendship' => array('className'=>'Friendship')
);
或
var $hasMany = array(
'Copy' => array('className'=>'Copy'),
'Friendship' => array('className'=>'Friendship')
);
另外,请检查拼写错误,例如conditions
而不是condition
答案 3 :(得分:0)
您的表名也可能是问题所在。我有一个名为“Class”的桌子,它给了蛋糕。我把它改成像Myclass这样的东西,并且它有效。 Class是一个保留字,Copy也可能是一个。