我难住了。
我有一组数据库,其中包含客户数据,例如 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()
表明它只是没有将数据从数据库中取出。我转储了这段代码生成的语句并自己运行它,并在所有行中获取了数据。
这里发生了什么?