Laravel - 检查关系是否存在

我正在尝试检查模型是否具有使用关系with('')


$currentUser = User::with('account.member.country', 'identity')->first();


$relations = collect($currentUser->getrelations())->values();  //or without converting

与getrelations()我可以得到帐户和身份关系


只要存在嵌套关系,我如何动态创建并检查帐户是否也有关系(成员)?


我的意思是在我的示例中使用嵌套关系,成员是来自帐户的嵌套关系,而国家/地区是来自成员的嵌套关系。


aluckdog
浏览 79回答 3
3回答

湖上湖

检查关系键是否已设置,即!empty($post->user_id)这样可以避免不必要的数据库查询。显然,这只适用于 belongsToRelationships。对于其他关系类型,可以使用类的 has 方法,即Post::has('user')如果你已经有了模型,你可以做$post->newQuery()->has('user');or $post->user()->exists()。所以,是的,有很多不同的选择。看看 Laravel 文档是怎么说的

海绵宝宝撒

不确定您是否在寻找什么,但您可以使用 exists 辅助方法,如果关系存在,该方法将返回一个布尔值,User::first()->has('dogs')->exists();如果第一个用户与狗有关系,将返回 true。

繁华开满天机

我发现解决方案基本上是一个递归函数protected  $relationNames = [];function recursive($model){        foreach($model as $key => $value){           $this->relationNames[$key] =$value;            if(count($value->getrelations()) > 0){                $this->recursive($value->getrelations());            }        }  }
打开App,查看更多内容
随时随地看视频慕课网APP