私は現在、DataMapper ORM for CodeIgniter を使用して Web サイトをモデル化しています。現時点ではusers
、ID を含むすべての標準ユーザー情報を含むform_data
テーブルと、独自の ID と、テーブルの列にcreated_by
リンクするフィールドが呼び出されるテーブルがあります。簡単に言うと、users-form_data は 1 対多の関係です。私の DataMapper モデルは次のようになります。id
users
ユーザー
class user extends DataMapper {
var $has_many = array(
'form_data_created_by' => array(
'class' => 'form_data',
'other_field' => 'created_by'
)
);
}
...そしてもちろん、ここでは簡潔にするために編集しました
そして、私の form_data モデルは次のようになります:
class form_data extends DataMapper {
var $table = 'form_data';
var $has_one = array(
'form_type',
'created_by' => array(
'class' => 'user',
'other_field' => 'form_data_created_by'
)
);
}
これが問題です。このコードを実行すると:
$form_type = new form_type();
$form_data = $form_type->where('app_id', $app_id)->get()->form_data->get()->all_to_array();
次のようなエラーがスローされます。
Severity: Warning
Message: Invalid argument supplied for foreach()
Filename: datamapper/array.php
Line Number: 53
$form_data オブジェクトの JSON をエコーアウトすると、次のようになります。
{"id":1,"form_type_id":"3","create_date":"1306241597","created_by":[],"status":"a"}
created_by
空の配列がどのように機能するかに注意してください。私のテーブルの列は間違いなく と呼ばれていますcreated_by
。奇妙なことに、この列を次のようuser_id
に変更し、form_data
クラスを次のように変更すると、次のようになります。
var $has_one = array('form_type', 'user');
...そして、user
クラスを次のように変更します。
var $has_many = array('form_data') //among others
すべてが完璧に機能し、 の適切な値が得られましたuser_id
。
それで、誰かが私を正しい方向に向けることができますか?このページをガイドとして使用してきました: http://datamapper.wanwizard.eu/pages/advancedrelations.html
ありがとう