[英]Many to one and Many to many on same objects using datamapper ORM in Codeigniter
[英]Using an aliased field in a CodeIgniter DataMapper ORM many-to-one relationship
我目前正在使用 DataMapper ORM 為 CodeIgniter 建模一個網站。 目前,我有一個包含所有標准用戶信息的users
表,包括一個 id 和一個form_data
表,它有自己的 id 和一個名為created_by
的字段,它鏈接到users
表上的id
列。 更簡單地說,users-form_data 是一對多的關系。 我的 DataMapper 模型如下所示:
用戶
class user extends DataMapper {
var $has_many = array(
'form_data_created_by' => array(
'class' => 'form_data',
'other_field' => 'created_by'
)
);
}
...當然還有更多,但為簡潔起見在此編輯
我的 form_data model 看起來像這樣:
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 object 的 JSON 時,我得到了這個:
{"id":1,"form_type_id":"3","create_date":"1306241597","created_by":[],"status":"a"}
注意created_by
是一個空數組嗎? 我表中的列絕對稱為created_by
。 奇怪的是,當我將此列更改為user_id
並將form_data
class 更改為:
var $has_one = array('form_type', 'user');
...並將user
class 更改為:
var $has_many = array('form_data') //among others
一切正常,我得到了user_id
的正確值。
那么任何人都可以在正確的方向上刺激我嗎? 我一直將此頁面用作指南: http://datamapper.wanwizard.eu/pages/advancedrelations.html
謝謝
我遇到了同樣的錯誤。 這是由於構造函數中缺少parent::__construct()
造成的。
嘗試提及“join_table”=>“user 和 form_data 都在哪里”,其他明智的數據映射器將在名為 form_datas_users 的單獨表中查找此關系
並盡量避免表名中的下划線,datamapper 在很多地方都使用它來在內部識別表關系
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.