Zend Framework DB Select 不会获取整行的数据


Zend Framework DB Select doesn't get the data for the whole row

我被难住了。

我有一套数据库,其中包含客户数据,例如client_personal中的个人详细信息和client_contact中的联系方式等。这里有 6 个联接来收集一整行信息。所以,从逻辑上讲(或者我是这么认为的),我这样做了;

$oSelect->from(array('details' => 'client_details'))
        ->joinLeft(array('contact' => 'client_contact'), 'contact.client_id = details.id')
        ->joinLeft(array('other'   => 'client_other_details'), 'other.client_id = details.id')
        ->joinLeft(array('nok'     => 'client_nextofkin'), 'nok.client_id = details.id')
        ->joinLeft(array('notes'   => 'client_notes'), 'notes.client_id = details.id')
        ->joinLeft(array('contract' => 'client_contract'), 'contract.client_id = details.id')
        ->joinLeft(array('image'   => 'client_image'), 'image.client_id = details.id')
        ->where('details.id = ?', $cid);

现在,这返回了大量信息,但在我的测试数据中缺少一些字段。例如,client_contact包含:

id    client_id    email    phone    mobile    phone    address    postcode    country

虽然我已经验证了所有字段都包含一些测试数据,但我正在获取除"电话"和"地址"之外的每个字段的数据 - phone 是一个 varchar(11) 字段,与移动相同,我正在从中获取数据,地址是一个文本字段,与邮政编码相同(出于此测试的目的),我也获取了数据。

它不会在此过程中丢失 - 运行->fetch()后立即出现var_dump()表明它只是没有将数据从数据库中获取。我转储了此代码生成的语句并自己运行了该语句,并在所有行中获取了数据。

这是怎么回事?

关系。这里发生的事情与两个表格的内容有关——client_details和client_nextofkin。

这两个表都包含标记为"地址"和"电话"的字段,并且由于直系亲属表在联系人详细信息表之后进入联接,因此这些字段在我的结果集中被覆盖。