php - Laravel ownsToMany() 关系与 all() 或 where() 方法一起使用,而不仅仅是 find()

标签 php mysql laravel eloquent

我有一个名为 Images 的模型 我有另一个名为“类别”的模型

一个图像可以有多个类别,一个类别也可以有多个图像。它们通过 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 的功能。

最佳答案

如果您希望所有带有类别的图像嵌套在结果中,您应该使用预先加载:

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

或者:

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

关于php - Laravel ownsToMany() 关系与 all() 或 where() 方法一起使用,而不仅仅是 find(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28502717/

相关文章:

php - 使用 PHP 从 AndroidManifest.xml 中提取数据

mysql - 如何使用 NiFi 解析/提取属性名称及其值

php - 尝试在 DatabaseServiceProvider 中使用单例创建的 ConnectionFactory 类

php - Laravel redirect::route 在页面加载之间显示一条消息

php - mysql查询不会运行得更快

PHP MySQL 排序规则问题 - 连接表

mysql - SQL中如何根据某列的值进行计数?

Laravel 使用 AWS 不安全地提供 Assets

新用户注册时 Laravel 5.8 无法生成 api_token

php - 使用 <div> 创建表时如何在 <ul> <li> 中使用 colspan