2014-04-05 49 views
0

我試圖讓一對多的關係休息室城市 所以,一個休息室可以在許多城市之間 - 「肯德基」 =>倫敦,巴黎,馬德里和etc 爲了我使用DataMapper,但手冊si有點混亂,我收到一個錯誤 - 表'databasename.cities_lounges'不存在,但有一個表lounge_cities。當我將其更改爲cities_lounges它給了我不同的錯誤,如描述cities_lounges笨&DataMapper的:一對多的關係

這裏是lounge_cities表載:「ID,lounge_id(整型,無符號),city_id(整型,無符號)

這裏是我的型號:

<?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

有人可以幫助我,但不要指向我的手冊,因爲我很難找到理解...?乾杯

+0

看起來你需要設置一個數據庫或指向它t在正確的地方。 '表'databasename.cities_lounges'不存在'正在數據庫中尋找你的表名爲databasename – Chitowns24

+0

不是這樣的:(也許我不是說它正確的方式 – Unsparing

回答

1

你有一對多的關係,所以你只需要在你的「休息室」數據庫表中添加一列「city_model_id」......沒有必要爲「lounge_cities」表(它應該有被「cities_lounges」根據「表命名規則):

連接表必須同時被接合,按字母順序的表名稱來命名的,由一個下劃線(_)分隔例如,。 (source

+0

謝謝你隊友!:) – Unsparing

+0

但等它贏了如果休息室位於許多城市,那麼city_id欄需要爲一個城市提供一個以上的身份證,而且這樣行不通? – Unsparing

+0

在這種情況下,您並沒有一對多的關係,而是一個多對多的關係,它需要關係表。相應地設置你的模型(兩者都是$ has_many),檢查你的命名約定,它將起作用。 – Wietse