我有一个自定义的书面解决方案,我将其移植到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(Stats有很多User_Stats&amp;&amp; User_Stats有很多Stat;等等)。我知道我错过了一些东西。
任何帮助将不胜感激!谢谢!
答案 0 :(得分: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-&gt;许多Users_Stats很多&lt; -1 Stats
答案 1 :(得分:3)
经过一些游戏,以及Nikolaos Dimopoulos的一些帮助后,我发现了一些事情。
用户模型:
<?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');
}
}