私は3つCActiveRecordのモデルを持っています:
- あ
- B
- ハ
関係:
- AにはBがたくさんあります。
- AにはCがたくさんあります。
- BはAに属しています。
- C は A に属します。
では、データベースからAControllerのactionHome($id)1 行を取得しAています。デフォルトのようにactionView($id)。
のビューでは、それに属するとactionHome()のすべてのインスタンスもリストします。BCA
public function actionHome($id)
{
$this->render('home', array('a' => A::model()->findByPk($id)));
}
では、のリレーションシップの熱心な読み込みをactionHome()使用したいと考えています。A
しかし、関数に追加with()すると、findByPk()すぐに致命的なエラーが発生します。
public function actionHome($id)
{
$this->render('home', array('a' => A::model()->with('bs','cs')->findByPk($id)));
}
Fatal error: Call to a member function label() on a non-object in私のhome.phpビューファイル。
label()Aモデルクラス内にある public static 関数です。
そのため、熱心な読み込みを追加したため、これにより関数が使用できなくなります。
誰か助けてくれませんか?
この機能が利用できなくなったのはなぜですか?
label()私のビューhome.phpで次のように呼び出されます:
$this->breadcrumbs = array(
CHtml::encode($a->label(2)) => array('index'),
CHtml::encode($a->name),
);
label()私のモデルでは次のように定義されています。
public static function label($n = 1)
{
if ( $n == 0 ) $n = 1;
return Yii::t('app', 'A|As', $n);
}
ビュー内でへの呼び出しをコメントアウトするlabel()(または への呼び出しを変更するA::label(2)) と、次の行でもエラーが発生します..その「名前」は非オブジェクトのプロパティではありません。
明らかに、何らかの理由で$a、オブジェクトではなくなりました。
更新 1:
returnにwith()原因を追加することは私の見解にあるので、その理由を見つけようとしています。遅延読み込みにはこの問題はありません。findByPk($id)NULL$aNULL