简体   繁体   English

Codeigniter数据映射器一对多关系

[英]Codeigniter datamapper one to many relationship

I have two table rostertype and rostertypepositions 我有两个表rostertype和rostertypepositions

在此处输入图片说明

I have created two model 我创建了两个模型

class Roster_type extends DataMapper{

    var $table = "rostertype";
    var $has_many = array(
        'position'  =>  array(
            'class' =>  'Roster_typeposition',
            'other_field'   => 'roster_position',
            'join_self_as'    =>  '',
            'join_other_as' =>  'RosterType'
        )
    );
    function __construct($id = NULL){
        parent::__construct($id);
    }

    function getAllRoster(){

        return $this->count();
    }
}

class Roster_typeposition  extends DataMapper{

    var $table = "rostertypepositions";
    var $default_order_by = array('PositionIndex'=>'asc');
    var $has_one = array(
        'roster_position'   => array(
            'class' =>  'Roster_type',
            'other_field' => 'position',
            'join_self_as'    =>  'RosterType',
            'join_other_as' =>  ''
        )
    );
    function __construct($id = NULL){
        parent::__construct($id);
    }

    function get_all_positions(){
        $u =  $this->get_iterated();
        foreach ($u as $ab=>$d){
            echo "<pre>";print_r($d->roster_position->get());echo "</pre>";
        }
        die();
    }
}

But for some reason i am getting this error 但是由于某种原因我遇到了这个错误

Error Number: 1146

Table 'ad_8cceab3cf7883a5.rostertype_rostertypepositions' doesn't exist

SELECT `rostertype`.*
FROM (`rostertype`)
LEFT OUTER JOIN `rostertype_rostertypepositions` position_rostertype_rostertypepositions ON `rostertype`.`id` = `position_rostertype_rostertypepositions`.`_id`
WHERE `position_rostertype_rostertypepositions`.`RosterType_id` =  2

Filename: /Applications/MAMP/htdocs/IBM_bluemix/Development/Draftbeast-Dev/libraries/Datamapper.php

Line Number: 1344

I dont know how it is generating that table position_rostertype_rostertypepositions . 我不知道它是如何生成该表position_rostertype_rostertypepositions Please help and what am i doing wrong. 请帮助,我在做什么错。

Solved it by taking empty fields in model 通过采取模型中的空白字段来解决

class Roster_typeposition  extends DataMapper{
    var $model = 'rostertypepositions';
    var $table = "rostertypepositions";
    var $default_order_by = array('PositionIndex'=>'asc');
    var $has_one = array(
        'roster_position'   => array(
            'class' =>  'Roster_type',
            'other_field' => 'position',
            'join_self_as'    =>  'RosterType',
        )
    );

And

class Roster_type extends DataMapper{
    var $model = 'Roster_type';
    var $table = "rostertype";
    var $has_many = array(
        'position'  =>  array(
            'class' =>  'Roster_typeposition',
            'other_field'   => 'roster_position',
            'join_other_as' =>  'RosterType'
        )
    );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM