1

クラス関係の定義に問題があります。

その前に、私のデータベース構造をお見せしましょう

    Agent table
    id
    username
    password

    Views table
    id
    agent_id
    accessor_id

エージェントは、多くのエージェントが投稿を表示できるようにすることができます。テーブル ビューには、エージェントの所有者と、彼/彼女の投稿を表示できるエージェントのデータが保持されます。

ビューモデルに関する私の関係ステートメントは次のように宣言されています:

/**
 * @return array relational rules.
 */
public function relations() {
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'agents' => array(self::BELONGS_TO, 'Agent', 'agent_id'),
    );
}

エージェント モデルに関する私の関係ステートメントは次のように宣言されます。

/**
 * @return array relational rules.
 */
public function relations() {
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'groups'=>array(self::BELONGS_TO, 'Group', 'group_id'),
        'views' => array(self::BELONGS_TO, 'View', 'agent_id'),
    );
}

アプリケーションを実行しようとすると、次のエラーが表示されました。

The relation "views" in active record class "Agent" is specified with an invalid foreign key "agent_id". There is no such column in the table "agents".

どうすればこれを解決できますか? 助けてください。ありがとうございました!

4

2 に答える 2

2

agent->views はBELONGS_TO関係ありません。次のいずれHAS_ONEHAS_MANYです。

'views' => array(self::HAS_ONE, 'View', 'agent_id'),
于 2012-05-28T09:09:41.067 に答える
-2

ビューモデルのみでリレーションを定義する必要があります...

public function relations() {
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'agents' => array(self::BELONGS_TO, 'Agent', 'agent_id'),
    );
}

また、エージェント モデルでリレーションを定義する必要はありません。

コントローラー側では、このようなレコードを見つけることができます...

$model = View::model()->with('agents')->findAll();

この $model には、ビューのすべてのレコードとエージェントもあります..

これがうまくいくことを願っています..

于 2012-05-28T09:39:37.863 に答える