私は3つCActiveRecord
のモデルを持っています:
- あ
- B
- ハ
関係:
- AにはBがたくさんあります。
- AにはCがたくさんあります。
- BはAに属しています。
- C は A に属します。
では、データベースからAController
のactionHome($id)
1 行を取得しA
ています。デフォルトのようにactionView($id)
。
のビューでは、それに属するとactionHome()
のすべてのインスタンスもリストします。B
C
A
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
$a
NULL