提问者:小点点

Cakephp从用户更改数据库外键字段。用户的id。id在select语句中给出错误


Cakephp从用户更改数据库外键字段。用户的id。id给出的错误类似于我想用find()方法获取选择数据时的错误:

错误:SQLSTATE[42S22]:找不到列:1054未知列'Model.user_id'in'where cluse'

即使在我使用的find方法中的模型控制器中:

查找('all',数组'条件'=

我以为是缓存,但是清除缓存-


共1个答案

匿名用户

即使您在查找中指定了条件,这些表在模型中也是相关的。更多关于模型。用户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约定,每个知道它们的人都可以轻松理解逻辑。