我在这里阅读了一些不同的帖子,但我无法弄清楚我做错了什么。
我的数据库设置如下:
homes
- id
- address_id
- price
- etc...
address
- id
- home_id
- address1
- address2
- etc...
然后我的模型看起来像这样,浓缩。
home.php
<?php
class Home extends DataMapper {
public var $has_one = array('address');
}
address.php
<?php
class Address extends DataMapper {
public var $has_one = array('home');
}
然后我的控制器使用以下内容:
homes.php
class Homes extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->library('datamapper');
}
public function index() {
$homes = new Homes();
$homes->include_related('address');
$homes->get_iterated();
$this->output->enable_profiler(TRUE);
_p($homes); // Self made function that wraps a print_r() in two <pre> tags.
}
}
如果我注释掉这两行,我会得到标准的 CI 返回数组。
$homes->include_related('address');
$homes->get_iterated();
如果我不这样做,我会收到服务器错误。这是我第一次使用 DataMapper,我几乎可以肯定我做错了一切,但不知道从哪里开始。
更新:
我想出了我的问题。我必须将数据库表更改为address
我必须addresses
在我的address.php
模型中指定var $table = 'addresses';
这解决了一切。