【问题标题】:Laravel Eloquent - using "With" along with "find"Laravel Eloquent - 使用“With”和“find”
【发布时间】:2016-12-13 10:38:27
【问题描述】:

虽然提出了类似的问题,但这里的上下文不同。 Laravel Eloquent with and find

我现在遇到的问题是,当我使用 “find” 时,它返回的是对象而不是集合。

MyModel::find($myId)

但是当我使用 "with" 时,它会返回我的集合。不应该是一个急切加载所有必需数据的对象吗?

MyModel::find($myId)->with('notes')

我希望它返回一个带有急切加载笔记的对象。但它返回的集合。所以我必须得到集合的第一个对象,然后是急切加载的笔记。但是当我做类似的事情时

MyModel::find($myId)->with('notes')->first()

它返回单个对象,这是正确的,但对我来说没有意义,因为我在 laracast 论坛上读到 "first" 在幕后使用 "find"。那么我真的需要同时使用 "find""first" 来获取所需的数据还是我做错了什么?

PS我使用的是 Laravel 5.3

【问题讨论】:

  • 试试 MyModel::with('notes')->find($myId);
  • 太好了,它确实奏效了。但是您能解释一下这两种方法背后的流程吗?
  • Alexey Mezenin 已经提到过。
  • 是的,刚刚看到。非常感谢。

标签: laravel eloquent


【解决方案1】:

以这种方式使用它来获取带有集合的对象:

MyModel::with('notes')->find($myId);

https://laravel.com/docs/5.3/eloquent-relationships#eager-loading

这应该只返回查询构建器实例:

MyModel::find($myId)->with('notes')

【讨论】:

  • 是的,它确实有效。我发布的那个是我在其中一个 laracast 视频中看到的,但它没有使用“with”。谢谢指正。
猜你喜欢
  • 2013-05-27
  • 1970-01-01
  • 2018-10-30
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 2017-07-06
相关资源
最近更新 更多