我刚遇到这个奇怪的问题。我正在将我的代码部署到测试服务器,一切都是一样的。
我有一个简单的$laptop = Laptops::where('name', 'Mac')->first() ?: new BlankLaptop();
BlankLaptop
类是一个扩展Laptops
类的空类。
然后我做
if ($laptop->exists()) // do something
问题是它总是在生产中返回true,即使在我dd($laptop)
时,结果是生产服务器和本地服务器中的相同。
然而,当我执行$laptop->exists
(没有括号)时,它会返回正确的值。
->exists()
和->exists
之间是否存在差异?
感谢。
答案 0 :(得分:5)
肯定存在差异。
$laptop->exists
检查模型上的the exists
property,确定当前模型是否已保存到数据库中。
$laptop->exists()
在查询构建器上调用the exists
method。它等同于:
$doesAnyLaptopExist = Laptop::query()->exists();
...运行此SQL语句:
select exists(select * from `laptops`)
...确定表格中是否有任何记录。
巨大差异。