【问题标题】:How to get data from relation in Laravel used in with()?如何从 with() 中使用的 Laravel 中的关系中获取数据?
【发布时间】:2021-07-08 10:51:11
【问题描述】:

我从多个相互关联的表中获取数据。但在其中一种关系中,我想通过where('user_id, $userID) 获取userAnswers 记录。它的正确语法是什么

public function survey_completed_show($userSurvey, $userID)
{
    $userSurvey =  UserSurvey::with('survey.questions.userAnswers')->find($userSurvey);

    return view('surveys.conducted-answers', compact('userSurvey'));
}

我只想获得所选用户的答案,我目前正在获得每个用户的所有答案

【问题讨论】:

    标签: php laravel eloquent relationship


    【解决方案1】:

    你可以使用深with:

    $userSurvey =  UserSurvey::with(['survey'=>function($query)use( $userID){
                $query->with(['questions'=>function($query)use( $userID){
                        $query->with(['userAnswers'=>function($query)use( $userID){
                            $query->where('user_id', $userID);
                        }]);
                }]);
                }])->find($userSurvey);
    

    【讨论】:

    • 是的,这是您解决的另一个问题。深新对我来说是新的,谢谢
    【解决方案2】:

    假设您只需要过滤关系而不是 UserSurvey 您可能想尝试一下

    public function survey_completed_show($userSurvey, $userID)
    {
        $userSurvey =  UserSurvey::with(['survey.questions.userAnswers' => function($q) use ($userID){
            $q->where('user_id', $userID);
        }])->find($userSurvey);
    
        return view('surveys.conducted-answers', compact('userSurvey'));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 2020-07-01
      • 2018-02-14
      • 2021-08-06
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多