0

Profesionalと の間に多対多の関係があるPlanため、次のコードを書きました。

プロフェッショナル.php

class Profesional extends BaseModel {

    static $table_name = 'profesionales';
    static $primary_key = 'idprofesional';

    static $has_many = array(
        array(
            '_planes',
            'class_name' => 'Plan',
            'through' => '_profplanes'
        ),      
        array(
            '_profplanes',
            'class_name' => 'ProfPlan',
            'foreign_key' => 'profesional'
        )
    );
}

profplan.php

class ProfPlan extends BaseModel{

    static $table_name = 'profplanes';
    static $belongs_to = array(
        array(
            '_plan',
            'class_name' => 'Plan',
            'foreign_key' => 'plan'
        ),
        array(
            '_profesional',
            'class_name' => 'Profesional',
            'foreign_key' => 'profesional'
        )
    );

}

plan.php

class Plan extends BaseModel {

    static $table_name = 'planes';
    static $primary_key = 'idplan';
    static $has_many = array(
        array(
            '_profplanes',
            'class_name' => 'ProfPlan',
            'foreign_key' => 'plan'
        )
    );
}

しかし、私は得るClass Profplane does not exist。エラーはどこにありますか? 私は何を間違っていますか?

4

1 に答える 1

0

クラス/テーブルのスペルを修正してください! コードの早い段階で簡単に修正でき、後でメンテナンスの悪夢になります =P! "Plan->Plans' 'Profesional=>Professional', "Professionales->"Professionals".

正直なところ、phpactiverecord のスルー リレーションシップ コードは煩わしく、気まぐれで、一般的に調べる必要があります。

実際にコードをどのように呼び出しているかを示す必要がありますが、私はあなたがやっていると仮定します

Professional::find(1)
$professional->_plans, //Error is thrown here

ProfPlan->_plansだけでなく、が定義されるように(または_planesあなたの場合は)、コードを設定する必要がありますProfPlan->_plan。Phpactiverecord は、通過する関係を明示的に知る必要があります。より明確な説明が必要な場合はお知らせください。

于 2013-05-28T15:59:38.863 に答える