我正在尝试使用其 ID 从 posts
数据库表中获取记录。一段时间以来,我一直在研究 find() 方法,对它为什么不起作用感到困惑。这是我的查询,对我来说看起来正确但没有用:
$post = Post::find($id);
$post->delete();
我不情愿地这样做了:
$post = Post::where('id', $id);
$post->delete();
令人惊讶的是,它起作用了,但我不知道如何。
我也知道,与 find()
不同, where()
是一个查询生成器,所以我也可以这样使用它: Post::where('id', $id)->first()
关于方法工作方式的差异有什么想法吗?
原文由 Awa Melvine 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的代码看起来不错,但有几点需要注意:
Post::find($id);
作用于主键,如果您已将模型中的主键设置为id
通过执行以下操作:然后
find
将改为按该键搜索。Laravel 还期望
id
是一个整数,如果您使用的不是整数(例如字符串),则需要将模型上的增量属性设置为 false: