2010-05-11 73 views
0

我在數據庫中的以下表:Kohana的ORM別名和 「試圖獲得非對象的財產」

  • 團隊:
    • ID
  • 匹配:
    • id
    • team1_id
    • team2_id

我已經在我的Kohana v2.3.4的應用程序定義了以下ORM型號:

class Match_Model extends ORM { 
    protected $belongs_to = array('team1_id' => 'team', 'team2_id' => 'team'); 
} 

class Team_Model extends ORM { 
    protected $has_many = array('matches'); 
} 

在控制器下面的代碼:

$match = ORM::factory('match',1); 
echo $match->team1_id->name; /* <-- */ 

是thro機翼上標有/* <--- */臨客以下錯誤:

試圖讓非對象

該框架產生的外鍵,而不是參照Match_Model實例,因爲它應該的價值的財產(給出has_many和belongs_to屬性)。

我錯過了什麼嗎?

注:以防萬一,我在應用程序添加的不規則複數'match' => 'matches' /配置/ inflector.php

+1

您是否使用KO2 KO3還是?我不太瞭解KO2,但在KO3中,這些實例變量被前綴加下劃線(即_belongs_to,_has_many)。 – 2010-05-11 19:25:09

+0

謝謝。我已將kohana版本添加到問題中.- – mmutilva 2010-05-11 19:32:51

+1

您是否嘗試過'$ match'上的'print_r'來查看該變量中的內容? – Zack 2010-05-11 20:36:08

回答

0

解決了! Kohana的社會給了我answer:爲$

的正確值belongs_to的屬性是:

class Match_Model extends ORM { 
    protected $belongs_to = array('team1' => 'team', 'team2' => 'team'); 
} 

documentation指出它:

class Blog_Post_Model extends ORM { 
    protected $belongs_to = array('author' => 'user', 'editor' => 'user'); 
} 

的blog_posts數據庫表將 現在有2列, blog_posts.author_id和 blog_posts.editor_id,並且兩個 都具有存在於users.id中的值。

看來,我已經錯過了這條線,:)