0

私は次のコードを持っていますが、それは機能しますが、laravelの雄弁な方法に従っていないようです:

Article::left_join('images', 'articles.id', '=', 'images.article_id')
            ->join('article_category', 'articles.id', '=', 'article_category.article_id')
            ->where('article_category.category_id', '=', $category_id)
            ->get();

私は4つのテーブルを持っています。相互に多対多の関係を持つ記事とカテゴリ、記事IDとカテゴリIDを保持するピボットテーブルarticle_categoryテーブル、および記事と1対1の関係を持つ画像テーブル。

モデルを次のように設定します。

class Category extends Eloquent {
    public static function get_articles($category_id) {
        return static::find($category_id)->has_many_and_belongs_to('Article');
    }

class Article extends Eloquent {
    public function categories() {
        return $this->has_many_and_belongs_to('Category');
    }

    public function image() {
        return $this->has_one('Image');
    }

ただし、3ビットすべての情報をまとめることはできないようです。できます:

Category::get_articles($current_category)->get();

特定のカテゴリのすべての記事を取得するために、記事の画像を取得できないようですが、チェーンできるものは何もないようです。私が間違ってやっていない限り?私が見逃しているトリックはありますか?

私はドキュメントから削除されたバージョンを試しました:

foreach (Article::with('image')->get() as $article) {
    echo $article->image->foo;
}

ただし、エラーが発生します。var_dumpに$ article-> imageがオブジェクトであると表示されていても、非オブジェクトのプロパティを取得しようとしています。変。

ありがとう

4

1 に答える 1

0

画像テーブルのモデルをセットアップしていない場合は、それを行います。ORM はそこにモデルを必要とするため、「イメージ」が何を参照しているかを認識します。

::with メソッドを使ってカテゴリ情報を取得できますか、それとも面倒ですか?

于 2013-02-06T22:52:37.140 に答える