我刚刚遇到了这个奇怪的问题.我正在将我的代码部署到测试服务器,一切都是一样的.
我有一个简单的 $laptop = Laptops::where('name', 'Mac')->first() ?: new BlankLaptop();
该BlankLaptop班是一个扩展的空类Laptops类.
然后我做
if ($laptop->exists()) // do something
Run Code Online (Sandbox Code Playgroud)
问题是它总是在生产中返回true,即使在I时dd($laptop),生产和本地服务器的结果都是相同的.
但是,当我这样做$laptop->exists(没有括号)时,它确实返回正确的值.
有没有之间的不同->exists()和->exists?
谢谢.
肯定有区别.
$laptop->exists检查模型上的exists 属性,该属性确定当前模型是否已保存到数据库.
$laptop->exists()在查询构建器上调用该exists 方法.它相当于:
$doesAnyLaptopExist = Laptop::query()->exists();
Run Code Online (Sandbox Code Playgroud)
...运行此SQL语句:
select exists(select * from `laptops`)
Run Code Online (Sandbox Code Playgroud)
...确定表中是否有任何记录.
巨大的差异.
| 归档时间: |
|
| 查看次数: |
706 次 |
| 最近记录: |