Laravel属于ToMany()与all()或where()方法的关系而不仅仅是find()

时间:2015-02-13 15:16:49

标签: php mysql laravel eloquent

我有一个名为Images的模型 我有另一个名为Categories

的模型

图像可以包含多个类别,类别也可以包含多个图像。它们通过image_category表连接,我在Laravel的Eloquent中制作了模型。

现在,我想获取图像的所有类别,我在Image.php模型中执行此操作:

function categories()
{
  return $this->belongsToMany("Category", "image_category");
}

现在我期待以下其中一项工作:

Image::categories()->get()->toArray();

或者:

Image:all()->categories()->get()->toArray();

以上不起作用,我看到了Laravel的文档,我看到所有的例子都是通过方法find()给出的:

Images:find(1)->categories()->get()->toArray();

我的问题:我应该如何将categories()与方法all()where()结合使用。

我可以直接在SQL中编写查询,但我想使用Eloquent的功能。

1 个答案:

答案 0 :(得分:2)

如果您想要在结果中嵌套categories的所有图片,您应该使用预先加载:

$images = Image::with('categories')->get();

或者:

$images = Image::where('foo', 'bar')->with('categories')->get();