簡體   English   中英

在 CodeIgniter DataMapper ORM 多對一關系中使用別名字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM