0

我难住了。

我有一组数据库,其中包含客户数据,例如 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

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

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

这里发生了什么?

4

1 回答 1

0

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

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

于 2013-01-22T13:22:50.307 回答