Php Laravel雄辩的多对多使用with()返回空数组

Php Laravel雄辩的多对多使用with()返回空数组,php,laravel,eloquent,laravel-5,Php,Laravel,Eloquent,Laravel 5,我使用的是Laravel5和Elotent,并且有一个多对多的关系设置,如下所示 images +----+---------------+------------------+ | id | image_name | image_location | +----+---------------+------------------+ | 1 | kittens.jpg | C:\kittens.jpg | | 2 | puppies.jpg | C:\puppies.

我使用的是Laravel5和Elotent,并且有一个多对多的关系设置,如下所示

images
+----+---------------+------------------+
| id |  image_name   |  image_location  |
+----+---------------+------------------+
|  1 | kittens.jpg   | C:\kittens.jpg   |
|  2 | puppies.jpg   | C:\puppies.jpg   |
|  3 | airplanes.jpg | C:\airplanes.jpg |
|  4 | trains.jpg    | C:\trains.jpg    |
+----+---------------+------------------+

image_set (pivot table)
+------------+----------+
| set_id     | image_id |
+------------+----------+
|          1 |        1 |
|          1 |        2 |
|          2 |        3 |
|          2 |        4 |
+------------+----------+

sets
+----+----------------+
| id |  description   |
+----+----------------+
|  1 | cute animals   |
|  2 | transportation |
|  3 | food           |
+----+----------------+
我在我的照片中建立了一种归属关系,并设置模型将这两者联系在一起

class Image extends Model {

    public function sets()
    {
        return $this->belongsToMany('App\Set');
    }
}

我试图完成的是执行一个查询,该查询只提供与它们关联的
图像的
集合。基本上,将
集合
图像集
表连接起来,只返回
1,2

我目前有一个相当长的查询,可以工作

$availSets = Set::join('image_set','image_set.set_id','=','sets.id')
        ->groupBy('sets.id')
        ->get();
但我已经看到了很多这样的例子

$availSets = Set::with('images')->get();
但是它会返回所有3组图像,包括那些没有关联图像的图像

  #relations: array:1 [▼
    "images" => Collection {#179 ▼
      #items: []
    }
  ]

我用错了吗?
with()
应该是这样工作的吗?

您要查找的是
has()
方法,而不是
with()
方法:

$availSets = Set::has('images')->get();
这将返回至少有一个图像的所有集合。可以找到这方面的文档


with()
方法用于加载给定的关系。它对检索父记录没有任何限制。您可以阅读更多有关即时加载的内容。

您要查找的是
has()
方法,而不是
with()
方法:

$availSets = Set::has('images')->get();
这将返回至少有一个图像的所有集合。可以找到这方面的文档


with()
方法用于加载给定的关系。它对检索父记录没有任何限制。您可以阅读更多有关即时加载的内容。

您要查找的是
has()
方法,而不是
with()
方法:

$availSets = Set::has('images')->get();
这将返回至少有一个图像的所有集合。可以找到这方面的文档


with()
方法用于加载给定的关系。它对检索父记录没有任何限制。您可以阅读更多有关即时加载的内容。

您要查找的是
has()
方法,而不是
with()
方法:

$availSets = Set::has('images')->get();
这将返回至少有一个图像的所有集合。可以找到这方面的文档


with()
方法用于加载给定的关系。它对检索父记录没有任何限制。你可以在即时加载中阅读更多内容。

你的类是
Images
,因此在你的关系中,它应该是
return$this->belongstomy('App\Images')那是个打字错误,我会改正的。实际的类叫做‘Image’哦,好的。请粘贴您的代码以避免输入错误:)您的类是
Images
,因此在您的关系中,它应该是
return$this->belongtomany('App\Images')那是个打字错误,我会改正的。实际的类叫做‘Image’哦,好的。请粘贴您的代码以避免输入错误:)您的类是
Images
,因此在您的关系中,它应该是
return$this->belongtomany('App\Images')那是个打字错误,我会改正的。实际的类叫做‘Image’哦,好的。请粘贴您的代码以避免输入错误:)您的类是
Images
,因此在您的关系中,它应该是
return$this->belongtomany('App\Images')那是个打字错误,我会改正的。实际的类叫做‘Image’哦,好的。请粘贴您的代码以避免输入错误:)