我正在尝试检查模型是否具有使用关系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()
。
所以,是的,有很多不同的选择。
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
不确定您是否在寻找什么,但您可以使用 exists 辅助方法,如果关系存在,该方法将返回一个布尔值,
User::first()->has('dogs')->exists();
如果第一个用户与狗有关系,将返回 true。
繁华开满天机
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());
}
}
}
- 3 回答
- 0 关注
- 78 浏览
添加回答
举报
0/150
提交
取消