Laravel - exists()方法在生产服务器中以local和true返回false

Tay*_*lor 0 php laravel

我刚刚遇到了这个奇怪的问题.我正在将我的代码部署到测试服务器,一切都是一样的.

我有一个简单的 $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

谢谢.

Jos*_*ber 5

肯定有区别.

  1. $laptop->exists检查模型上exists 属性,属性确定当前模型是否已保存到数据库.

  2. $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)

    ...确定表中是否有任何记录.

巨大的差异.