hasMany不提取?

也许我只是有一个缓慢的一天,但对于我的生活,我无法弄清楚为什么会发生这种情况。 我在一段时间内没有做过CakePHP,我正在尝试使用1.3版本,但这似乎没有工作......

我有两个模型:

area.php

<?php
class Area extends AppModel {
    var $name = 'Area';
    var $useTable = 'OR_AREA';
    var $primaryKey = 'A_ID';

    var $belongsTo = array(
        'Building' => array(
            'className' => 'Building',
            'foreignKey' => 'FK_B_ID',
        ),
        'Facility' => array(
            'className' => 'Facility',
            'foreignKey' => 'FK_F_ID',
        ),
        'System' => array(
            'className' => 'System',
            'foreignKey' => 'FK_S_ID',
        )
    );
}
?>

building.php

<?php
class Building extends AppModel {
    var $name = 'Building';
    var $useTable = 'OR_BLDG';
    var $primaryKey = 'B_ID';

    var $hasMany = array(
        'Area' => array(
            'className' => 'Area',
            'foreignKey' => 'FK_B_ID',
        )                    
    );
}
?>

OR_AREA有一个标题为FK_B_ID的列,指向B_ID

如果我运行如下的东西:

$this->Building->find('all', array('recursive' => 2));

即使OR_AREA表中有大量与建筑物关联的区域,我OR_AREA为所有建筑物获得空的[Area]阵列。 不仅如此,查询表甚至不显示CakePHP试图找到OR_BLDG所有记录OR_BLDG任何OR_BLDG 。 更令人费解的是,如果我这样做:

$this->Area->find('all');

我得到所有区域,并在适当的时候填充[Building]数组。

我错过了什么?

编辑:

我的模式的相关部分:

CREATE TABLE ORDB_ADMIN.OR_AREA
(
  A_ID            NUMBER(8),
  NAME            VARCHAR2(255 BYTE)            NOT NULL,
  FK_F_ID         NUMBER(8),
  FK_S_ID         NUMBER(8),
  FK_B_ID         NUMBER(8)
)

CREATE TABLE ORDB_ADMIN.OR_BLDG
(
  B_ID           NUMBER(8),
  BLDG           VARCHAR2(90 BYTE)              NOT NULL
)

我确实觉得有必要提一下,我使用的是Oracle,并且我找到了一张似乎描述正在发生的事情的票据,但是它在18个月前关闭,并且没有提供关于问题/做过什么的真实细节纠正它。

我还在1.2 CakePHP Book的“hasMany”部分中发现了一条评论:

如果hasMany关联没有返回任何记录,请检查主键和外键的列类型是否相同。 如果一个是int而另一个是char,那么您将不会从关联中获取任何记录(并且没有警告)。

但是,正如您在上面看到的那样,关键列在两端都是NUMBER(这也是CakePHP希望它们也适用于Oracle的)


最后找出了这是为什么发生。 虽然我在Oracle CakePHP中将所有列都定义为大写,但将它们置于lowercased并且在将自定义列定义为大写时无法找到它们。 因此,将我所有的$ primaryKey和foreignKey定义更改为小写修复了我的问题。

在找出原因之前,我在这个问题上打开了一张票,但我不确定除了可能在本书中做笔记外,还有很多事情要做,以免别人再浪费几天时间:)


我不确定,这是否正确,但你有什么看起来像我不正确foreignKeys区域模型...是这种情况?


在我看来,cakephp 1.3中的belogsTo关联有些问题。 我认为如果将外键更改为area_idbuilding_id一切都会好的。 看看这个帖子。 另一个人有类似的问题,解决方案为他工作。

链接地址: http://www.djcxy.com/p/64875.html

上一篇: hasMany not fetching?

下一篇: Edit of self referencing HABTM in cakephp works, sometimes