Cakephp从用户更改数据库外键字段。用户的id。id给出的错误类似于我想用find()方法获取选择数据时的错误:
错误:SQLSTATE[42S22]:找不到列:1054未知列'Model.user_id'in'where cluse'
即使在我使用的find方法中的模型控制器中:
查找('all',数组'条件'=
我以为是缓存,但是清除缓存-
即使您在查找中指定了条件,这些表在模型中也是相关的。更多关于模型。用户id在主模型的beloingsTo数组中定义,它将尝试查找相关记录。
假设您有Post和User。Post属于用户(作者),在这种情况下,您在Post模型中有一个定义:
$belongsTo = array('User'=>array(...));
而在用户你有
$hasMany = array('Post'=>array(...));
如果您使用的是以下简短语法:
$belongsTo = array('User');
它将搜索外键,如用户id。
要实现无错误的查找,需要设置$this-
$this->Post->find('all', array(
'conditions'=>array('Model.users_id'=>(int)$user_id),
'contain'=>array()
));
这样就不会选择关系表,但我建议在模型定义中定义关系列,或者将列更改为user_id-这就是为什么Cake很容易理解的原因-因为它有严格的命名DB约定,每个知道它们的人都可以轻松理解逻辑。