ここでいくつかの異なる投稿を読みましたが、何が間違っているのかわかりません。
私のDBは次のように設定されています:
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.
}
}
これら 2 行をコメント アウトすると、標準の CI 戻り配列が得られます。
$homes->include_related('address');
$homes->get_iterated();
そうしないと、サーバーエラーが発生します。DataMapper を使用するのはこれが初めてで、すべてが間違っているとほぼ確信していますが、どこから始めればよいかわかりません。
アップデート:
私は自分の問題を理解しました。address
DBテーブルを変更する必要がaddresses
あり、address.php
モデルで指定する必要がありましたvar $table = 'addresses';
それはすべてを修正しました。