2

私はカスタムで書かれたソリューションを持っており、それをPhalconに移植しています。これはPhalconを使用した最初の実行であり、使いやすく、十分に文書化されていますが、ピボットテーブルを介してリンクされているモデルのリンクについては何も見つからないようです。

要約は次のとおりです。

ユーザーがいます。ユーザーには統計があります。この2つは、users_statsというテーブルにリンクされています。この表には、ユーザーIDと統計IDの2つの列が含まれています。ピボットテーブルをモデル化するために、Users_Statsという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->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

これを試してください(ソース):

ユーザーモデル:

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

于 2012-12-03T14:49:25.330 に答える
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');
    }
}
于 2012-12-04T00:53:45.623 に答える