【问题标题】:Laravel - check if a relationship existsLaravel - 检查关系是否存在
【发布时间】:2020-06-21 11:28:02
【问题描述】:

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

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

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

用getrelations()我可以得到账号和身份关系

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

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

【问题讨论】:

  • 不太清楚你想要什么,但是看看has and whereHas。
  • 对不起我的英语不好,我试着解释一下:我需要它的主要原因,我需要用 ACL 检查模型的每个字段都有哪些权限的用户(全部保存作为一个 json 文件,每个表和每个列以及权限)这只是用户模型的一个示例,但我需要它一个通用函数来检查模型的所有嵌套关系。 $currentUser = User::with('account.member.country', 'identity''); 与 foreach 我可以得到与用户帐户的第一个主要关系,身份但可能该帐户也有嵌套关系

标签: php laravel eloquent relationship


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我找到了解决方案,它基本上是一个递归函数

    protected  $relationNames = [];
    
    function recursive($model){
    
            foreach($model as $key => $value){
    
               $this->relationNames[$key] =$value;
    
                if(count($value->getrelations()) > 0){
    
                    $this->recursive($value->getrelations());
                }
            }
      }
    

    【讨论】:

      猜你喜欢
      • 2014-08-24
      • 2014-05-28
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 1970-01-01
      相关资源
      最近更新 更多