Laravel Eloquent - 使用 "With"和 "find"

标签 laravel eloquent

尽管这里提出了类似的问题,但上下文不同。 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”来获取所需的数据还是我做错了什么?

P.S我使用的是 Laravel 5.3

最佳答案

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

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

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

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

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

关于Laravel Eloquent - 使用 "With"和 "find",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41119017/

相关文章:

php - 找不到类 'GuzzleHttp\HandlerStack'

php - 获取预期的目标 url 而不会丢失中间件中的值

php - 为许多记录批量插入 laravel

php - "Mass Assignment"在 Laravel 中是什么意思?

php - Laravel:Mediable 迁移错误语法错误或访问冲突:1071 指定的 key 太长;最大 key 长度为 1000 字节

Laravel 5/表单安全(需要说明)

php - 如何比较 int 和 timestamp 列(La​​ravel Eloquent )?

sql - 水平选择每组的第一条和最后一条记录

php - 同一服务器上的多个 Laravel 设置

php - 如何仅在 LIKE 查询 Laravel 中找到整个单词?