首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >避免查询以检查Laravel中是否存在关系

避免查询以检查Laravel中是否存在关系
EN

Stack Overflow用户
提问于 2018-03-07 11:16:19
回答 1查看 1.7K关注 0票数 0

在Laravel中,我有两个模型ManCar,而Car模型有一个外键man_id

现在我想检查一下Car是否有所有者,所以我可以这样做。

if($car->man != null)

我也可以这样做:

if($car->man_id != null)

但我不喜欢这个解决方案..。

但是以这种方式,Laravel做一个查询来检查Man是否存在,有什么方法可以避免这个无用的查询吗?

EN

回答 1

Stack Overflow用户

发布于 2018-03-07 11:40:38

您可以在Car模型上创建一个检查其所有者的新函数。

Car.php

代码语言:javascript
运行
复制
class Car extends Model {

   public function hasOwner()
   {
      return empty($this->man_id); // returns boolean
   }
}

然后,你就可以

代码语言:javascript
运行
复制
$car = Car::first();
if ($car->hasOwner()) { ... }

更新:

您还可以使用存在()方法。

代码语言:javascript
运行
复制
$car->man()->exists(); // bool: true if there is at least one row

从Laravel5.5或更高版本开始,您还可以使用doesntExist()来确定当前查询是否不存在行。

代码语言:javascript
运行
复制
$car->man()->doesntExist(); // bool: true if no row exists
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49150579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档