CodeIgniter& Datamapper:一对多关系

时间:2014-04-05 21:09:52

标签: php codeigniter datamapper codeigniter-datamapper

我想在休息室城市之间建立一对多的关系 因此,一个休息室可以在许多城市 - “肯德基”=&gt;伦敦,巴黎,马德里等 出于我的目的,我使用DataMapper,但手册有点令人困惑,我收到错误 - 表'databasename.cities_lounges'不存在,但是有一个名为 lounge_cities <的表/ strong>即可。当我将其更改为cities_lounges时,它会给出不同的错误,例如描述 cities_lounges

这是lounge_cities表包含的内容:“id,lounge_id(INT,UNSIGNED),city_id(INT,UNSIGNED)

这是我的模特:

<?php

 class Lounge_model extends DataMapper
 {
public function __construct()
{
    parent::__construct();
}

var $table = 'lounges';

var $has_one = array('city_model');


  }

<?php

  class City_model extends DataMapper
  { 
public function __construct()
{
    parent::__construct();
}

var $table = 'cities';

var $has_many = array('lounge_model');

   }

这是我试图让它成为我的控制器的功能:

public function id($id)
{
    $lounge = new lounge_model();
    $lounge->where('id', $id)->get();

    $relationshiptest = $lounge->city_model->get();
    var_dump($relationshiptest);
      }

这就是我所遵循的:http://datamapper.wanwizard.eu/pages/accessingrelations.html

有人可以帮助我,但是不要指向我的手册,因为我很难理解......?干杯

1 个答案:

答案 0 :(得分:1)

你有一对多的关系,所以你只需要在“休息室”数据库表中添加一列“city_model_id”......不需要“lounge_cities”表(应该是“ cities_lounges“根据”表命名规则“:

  

连接表必须以其加入的两个表名命名,按字母顺序排列,用下划线(_)分隔。例如,用户和国家/地区的联接表是countries_users。 (source