猿问

不要通过模型从数据库中获取行,而是通过外观数据库获取它

我不知道为什么,但是 mt User 模型点从 DB 获取行。但是门面 DB 明白了。在模型上也没什么特别的。在从 DB 获取它之前,我由工厂创建了这个 DB 行。它可以是什么?


User::where('public_key', $data['merchant_key'])->where('type', 'merchant')->first()


DB::table('users')->where('public_key', $data['merchant_key'])->where('type', 'merchant')->first()



鸿蒙传说
浏览 198回答 2
2回答

慕的地8271018

您在模型中使用了 Softdelete,它会deleted_at在您的表中查找一列。如果没有找到它会抛出一个错误。因此,如果您使用 softdelete 特性,请确保您的表有一deleted_at列。对于您的信息,如果您使用模型获取数据,则不会出现软删除的行。但是,如果您使用 DB Facade 获取数据,也会出现软删除的行。在Laravel 文档中阅读有关软删除的信息

绝地无双

这是因为,可能您正在使用softdelete .model 将添加额外的查询(范围)(其中已删除的_at 为空)。并且Db 外观不会检查它,因为在模型内部使用了 softdelete 特性。
随时随地看视频慕课网APP
我要回答