DataMapper通过join获得结果

时间:2013-06-26 17:42:43

标签: php codeigniter datamapper codeigniter-datamapper

我正在开发一个演示应用来评估CodeIgniter的新项目。我们目前正在审核DataMapper ORM库 - http://datamapper.wanwizard.eu

我遇到了一个奇怪的问题:我无法在一次回归中从2个连接表中获取值。我已经为两个表创建了模型,并验证我已正确设置$ has_many / $ has_one。在我的控制器中,此代码生成一个对象,其中包含来自命名表对象的所有行:

$job = new Job();
$data['job'] = $job->get(); //produces obj with all rows from table 'jobs'
$acct = new Acct();
$data['acct'] = $acct->get(); //produces obj with all rows from table 'accts'

我已经通过使用FOREACH循环遍历并查看数据来验证上述两种情况。但是当我尝试从两个表中提取相关信息时。我一无所获。我已经尝试了我在GET(高级)文档上找到的所有内容。具体来说,这不起作用:

//NOTE: a job has one acct joined on field 'acct_id'
$job = new Job();
$data['job'] = $job->include_related('acct',array('name'))->get();

结果对象($ data ['job'])仅包含'jobs'表中的数据。

在我看来,我在视图中使用此代码来查看数据:

<table>
<tr><?php foreach ($job->fields as $col) { ?><th><?= $col ?></th><?php } ?></tr>
<?php foreach($job as $row) { ?>
<tr><?php foreach($job->fields as $col) { ?><td><?= $row->$col ?></td><?php } ?></tr>
<?php } ?>
</table>

1 个答案:

答案 0 :(得分:1)

请尝试

  

$ job = new Job();

     

$ data ['job'] = $ job-&gt; include_related('acct',array('name'),TRUE,TRUE) - &gt; get();

详细说明: http://datamapper.wanwizard.eu/pages/getadvanced.html#include_related

相关问题