【问题标题】:CakePHP: Doesn't find child tablesCakePHP:找不到子表
【发布时间】:2013-06-16 21:13:38
【问题描述】:

我有三个模型:项目、学生和投票。 下面的代码就是它们之间的关系。在项目模型中:

public $hasMany = array('Student' => array(
    'className' =>'Student',
    'foreignKey'=>'project_id',
    'order' => 'Student.studentName DESC',
),
'Vote' => array(
    'className' =>'Vote',
    'foreignKey'=>'project_id',
));

在学生模型中:

public $belongsTo = array(
    'Project'=>array(
        'className'=>'Project',
        'foreignKey'=>'project_id'
));

在投票模型中:

public $belongsTo = array(
    'Project'=>array(
        'className' => 'Project',
        'foreignKey' => 'id'
));

但是,当我调用这个函数时(在项目模型中):

public function getApprovedProjects(){
    $approvedProjects = $this->find('all', array('conditions'=>array(
    'Project.approved' => 1)));
    return $approvedProjects;
}

这是我得到的数据:

Array(
[0] => Array
    (
        [Project] => Array
            (
                [id] => 0
                [projectName] => MyProject
                [semester] => GAME
                [description] => Test project
                [imageLink] => 
                [approved] => 1
            )

        [Student] => Array
            (
            )

        [Vote] => Array
            (
            )

    )

[1] => Array
    (
        [Project] => Array
            (
                [id] => 1
                [projectName] => CRIA STUFF
                [semester] => CRIA
                [description] => Cria project
                [imageLink] => 
                [approved] => 1
            )

        [Student] => Array
            (
            )

        [Vote] => Array
            (
            )

    )
)

它没有找到与该项目相关的任何学生或投票,即使它们存在并且我认为它应该存在。知道发生了什么吗?

【问题讨论】:

  • 有人有什么建议可以帮助我吗?我有一个工作的最后期限,我想避免等到可以与其他程序员见面。
  • 对于没有有任何学生或投票的项目,您的结果看起来格式正确。检查您的查询日志,您很可能会发现结果与您拥有的数据准确无误。
  • 我不知道为什么没有学生数据,但投票模型将外键指定为:'foreignKey' => 'id' 而不是'foreignKey' => 'project_id'。另请注意,在您的模型中,您应该使用外键表名称,例如:project_id 而不是 camelCase
  • 请显示这些表格的一些数据

标签: cakephp model find model-associations


【解决方案1】:

好的,我解决了这个问题。

事实证明,Cake 不喜欢与 id 为 0 的数据进行关联。我的所有其他提取都有效,并且一旦我将表中的所有数据更改为 id 为t 0,我的发现成功了。

因此,以后不要向表中添加 id 为 0 的条目。从 1 开始。

【讨论】:

    猜你喜欢
    • 2013-12-12
    • 2014-05-15
    • 1970-01-01
    • 2014-01-20
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多