2012-12-03 42 views
2

我有一個自定義的書面解決方案,我正在將其移植到Phalcon。這是我第一次使用Phalcon運行,雖然它易於使用並且有很好的文檔記錄,但我似乎無法找到關於通過數據透視錶鏈接模型的任何信息。模型和數據透視表

這裏是跑下來:

我有用戶。用戶有統計信息。這兩個鏈接與一個名爲users_stats的表。該表格包含兩列:用戶ID和統計ID。我創建了第三個類,名爲Users_Stats以在數據透視表之後進行建模。

用戶模型:

<?php 
class Users extends \Phalcon\Mvc\Model { 
    public function initialize() { 
     $this->hasMany('stat_id', 'Users_Stats', 'user_id', array('foreignKey' => true)); 
    } 
} 

統計型號:

<?php 
class Stats extends \Phalcon\Mvc\Model { 
    public function initialize() { 
     $this->belongsTo('stat_id', 'Users_Stats', 'id'); 
    } 
} 

Users_Stats型號:

<?php 
class Users_Stats extends \Phalcon\Mvc\Model { 
    public function initialize() { 
     $this->hasMany('user_id', 'Users', 'id'); 
     $this->hasMany('stat_id', 'Stats', 'id'); 
    } 
} 

我只是希望能夠採集基於用戶的統計信息。我不確定我是否缺少每個模型都需要屬於並且hasMany(統計有很多User_Stats & & User_Stats有很多Stat;等等)。我知道我錯過了一些東西。

任何幫助,將不勝感激!謝謝!

回答

3

嘗試此(source):

用戶模型:

<?php 
class Users extends \Phalcon\Mvc\Model { 
    public function initialize() { 
     $this->hasMany(
      'stat_id', 
      'Users_Stats', 
      'user_id', 
      array('foreignKey' => true) 
     ); 
    } 
} 

統計型號:

<?php 
class Stats extends \Phalcon\Mvc\Model { 
    public function initialize() { 
     $this->hasMany('stat_id', 'Users_Stats', 'id'); 
    } 
} 

Users_Stats型號:

<?php 
class Users_Stats extends \Phalcon\Mvc\Model { 
    public function initialize() { 
     $this->belongsTo('user_id', 'Users', 'id'); 
     $this->belongsTo('stat_id', 'Stats', 'id'); 
    } 
} 

用戶1->許多Users_Stats很多< -1統計信息

+0

謝謝你的提示!可悲的是,這並不奏效,但它確實指向了正確的方向。事實證明,所有這三個模型都需要同時擁有許多和belongsTo。我想通了,因爲我可以從user_stats獲得用戶,但反之亦然。我將在下面發佈答案。謝謝你的幫助! –

+1

很高興你把它整理出來:) –

3

經過一番玩弄,以及來自Nikolaos Dimopoulos的一些很好的幫助,我發現了一些事情。

  1. 類不能有下劃線。
  2. 查找表的模型必須屬於每個類,以及必須有許多這些相同的類。
  3. 屬於查找表模型的每個類都必須屬於查找表的模型,並且必須有許多查找表的模型。

用戶模型:

<?php 
class Users extends \Phalcon\Mvc\Model { 
    public function initialize() { 
     $this->belongsTo('id', 'UserStats', 'user_id'); 

     $this->hasMany('user_id', 'UserStats', 'id'); 
    } 
} 

統計模型:

<?php 
class Stats extends \Phalcon\Mvc\Model { 
    public function initialize() { 
     $this->hasMany('stat_id', 'UserStats', 'id'); 

     $this->belongsTo('stat_id', 'UserStats', 'id'); 
    } 
} 

UserStats型號:

<?php 
class UserStats extends \Phalcon\Mvc\Model { 
    /** 
    * Set database name as there is no UserStats DB 
    * 
    * @return string 
    */ 
     public function getSource() { 
     return 'user_stats'; 
    } 

    public function initialize() { 
     $this->belongsTo('user_id', 'Users', 'id'); 
     $this->belongsTo('stat_id', 'Stats', 'id'); 

     $this->hasMany('id', 'Users', 'user_id'); 
     $this->hasMany('id', 'Stats', 'stat_id'); 
    } 
}