我有以下代码有效,但似乎没有遵循 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 表和与文章具有一对一关系的图像表。
我将模型设置为:
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 显示 $article->image 是一个对象!诡异的。
谢谢