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(Stats 有很多 User_Stats && User_Stats 有很多 Stat;等等)。我知道我错过了一些东西。

任何帮助,将不胜感激!谢谢!

4

2 回答 2

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');
    }
}

用户统计模型:

<?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');
    }
}
于 2012-12-04T00:53:45.623 回答
3

试试这个(来源):

用户模型:

<?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->许多用户_统计 许多<-1 统计

于 2012-12-03T14:49:25.330 回答