0

これは、ドクトリンでクエリを実行している 2 つのテーブルのスキーマです。

私のスキーマには、タクソノミーとレッスンと呼ばれる 2 つのテーブルがあり、これらは多対 1 の関係があります [実際には 1 対 1 である必要がありますが、そのようにエンコードされています]。TaxonomyTable.class.php私のクエリは次のようにエンコードされています。

 $this->createQuery('t.*, l.lid')
      ->innerJoin('t.Lesson l')
      ->where('t.section = ?','specific_section');

クエリは正常に実行されますが、課題は実際にレッスンの蓋にアクセスすることです。クエリが実行され、変数に格納されていると仮定します$TaxonomyResults。以前の投稿から、次のようにできることを理解しています。

foreach($TaxonomyResults as $TaxonomyResult)
{
   echo $TaxonomyResult->getLesson()->getLid();
}

しかし、簡単に言えば、これは私にはうまくいきません。その理由はわかりません。画面全体に表示されるエラーは次のとおりです。

「Doctrine_Collection」にはメソッド「getLid」がありません。

ここで私が間違っていると思いますか?

4

1 に答える 1

2

あなたのスキーマが見えません。

Taxonomy は Lesson と 1 対多の関係にあると思います (Taxonomy は 1 つです)。

したがって、Taxonomy オブジェクトは多くのレッスンを持つことができます。

また$TaxonomyResult->getLesson()、Lesson オブジェクトではなく、Lesson オブジェクト (Doctrine_Collection) を返す必要があります。

配列のようなレッスン オブジェクトを取得できます。

$lessons = $TaxonomyResult->getLesson();

echo $lessons[0]->getLid(); 
于 2012-08-10T09:27:24.613 に答える