前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3分钟短文 | Laravel 检验关联模型是否存在的2个必知必会方法

3分钟短文 | Laravel 检验关联模型是否存在的2个必知必会方法

作者头像
程序员小助手
发布2020-08-13 14:48:34
9280
发布2020-08-13 14:48:34
举报
文章被收录于专栏:程序员小助手

引言

接着我们的Laravel系列说下去。今天的主题是在程序内,用什么方法判断,模型的关联模型是否存在呢?

本文通过对比分析,教会大家如何正确地判断 exists,或判断 null。

学习时间

假设有一个模型 RepairItem,有下面的关联关系:

代码语言:javascript
复制
public function option() {
    return $this->hasOne('RepairOption', 'repair_item_id');
}

如果更新RepairItem的时候,需要同步更新RepairOption数据。这时我们可以使用追加字段的修改器,

代码语言:javascript
复制
public function setOptionArrayAttribute($values)
{
    $this->option->update($values);
}

但是这会有一个问题。如果更新的时候,关联模型有可能不存在。这个时候做 update 更新操作,会返回 None 对象没有 update 方法这样的错误。

所以逻辑上需要一个判断,先判断关联模型是否存在。如果存在,就更新;如果不存在,就创建。那么如何判断关联模型是否存在呢?

其实,在Laravel中,使用 $this->option 援引关联模型时,如果存在,则返回关联模型对象或集合,如果不存在则是 Null 对象。所以我们可以使用判空方式。

比如使用 count 计数,这可以兼容一对一,一对多情景:

代码语言:javascript
复制
if (count($this->option)){   // exists }

在 PHP7.2以后,可以用 exists 方法判断:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 学习时间
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档