私は次のコードを持っていますが、それは機能しますが、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がオブジェクトであると表示されていても、非オブジェクトのプロパティを取得しようとしています。変。
ありがとう