为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel - 检查关系是否存在

Laravel - 检查关系是否存在

PHP
aluckdog 2022-10-22 15:57:46
我正在尝试检查模型是否具有使用关系with('')$currentUser = User::with('account.member.country', 'identity')->first();$relations = collect($currentUser->getrelations())->values();  //or without converting与getrelations()我可以得到帐户和身份关系只要存在嵌套关系,我如何动态创建并检查帐户是否也有关系(成员)?我的意思是在我的示例中使用嵌套关系,成员是来自帐户的嵌套关系,而国家/地区是来自成员的嵌套关系。
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

检查关系键是否已设置,即

!empty($post->user_id)

这样可以避免不必要的数据库查询。显然,这只适用于 belongsToRelationships。

对于其他关系类型,可以使用类的 has 方法,即

Post::has('user')

如果你已经有了模型,你可以做$post->newQuery()->has('user');or $post->user()->exists()

所以,是的,有很多不同的选择。

看看 Laravel 文档是怎么说的


查看完整回答
反对 回复 2022-10-22
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

不确定您是否在寻找什么,但您可以使用 exists 辅助方法,如果关系存在,该方法将返回一个布尔值,

User::first()->has('dogs')->exists();

如果第一个用户与狗有关系,将返回 true。


查看完整回答
反对 回复 2022-10-22
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

我发现解决方案基本上是一个递归函数


protected  $relationNames = [];


function recursive($model){


        foreach($model as $key => $value){


           $this->relationNames[$key] =$value;


            if(count($value->getrelations()) > 0){


                $this->recursive($value->getrelations());

            }

        }

  }


查看完整回答
反对 回复 2022-10-22
  • 3 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信