【问题标题】:Laravel - exists() method returning false in local and true in production serverLaravel - exists() 方法在本地返回 false,在生产服务器中返回 true
【发布时间】:2016-12-11 11:57:33
【问题描述】:

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

我有一个简单的$laptop = Laptops::where('name', 'Mac')->first() ?: new BlankLaptop();

BlankLaptop 类是一个空类,它扩展了 Laptops 类。

然后我做

if ($laptop->exists()) // do something

问题是它在生产中总是返回true,即使当我dd($laptop)时,结果在生产和本地服务器中都是相同

但是,当我执行$laptop->exists(不带括号)时,它确实返回了正确的值。

->exists()->exists 有区别吗?

谢谢。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    肯定有区别。

    1. $laptop->exists检查模型上的the exists property,确定当前模型是否已保存到数据库中。

    2. $laptop->exists() 在查询生成器上调用 the exists method。相当于这样:

      $doesAnyLaptopExist = Laptop::query()->exists();
      

      ...运行此 SQL 语句:

      select exists(select * from `laptops`)
      

      ...确定您的表中是否有任何条记录。

    巨大的差异。

    【讨论】:

      猜你喜欢
      • 2013-02-23
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 2012-02-21
      • 2018-11-09
      • 1970-01-01
      相关资源
      最近更新 更多