2013-02-06 171 views
0

我有下面的代码工作,但似乎并没有跟随laravel雄辩的语言:Laravel 3雄辩ORM使用

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表,以及与文章具有一对一关系的图像表。

设置我的模型为:

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'); 
    } 

但是我似乎无法信息的所有三位凑在一起。我可以这样做:

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

为了获得给定类别中的所有文章,但我似乎无法获得图像的文章,似乎有什么我可以链迈上?除非我做错了吗?有没有我错过的技巧?

我甚至从文档尝试了精简版:

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

不过,我得到一个错误:试图让非对象的属性,即使显示的var_dump $物品─>图像是一个对象!奇怪的。

谢谢

回答

0

如果您尚未设置图像表的模型,请执行此操作。 ORM需要模型,因此它知道'图像'指的是什么。

您可以使用:: with方法获取类别信息,还是很麻烦?