【问题标题】:Laravel 4 getting multiple collectionsLaravel 4 获得多个集合
【发布时间】:2015-03-19 21:49:30
【问题描述】:

我正在我的控制器中编写一个函数来返回一个 json 响应。这是我的功能:

public function play($id){
        $quiz = Quiz::find($id);
        $questions = $quiz->question()->get();

        return Response::json(array(
            'quiz' => $quiz,
            'questions' => $questions));
    }

这很有效,但是,我也有与问题相关的答案。 在我的Question 模型中,我有这个answer() 函数:

public function answer(){
        return $this->hasMany('Answer');
    }

在我的Answer 模型中,我当然有我的question() 函数:

public function question(){
        return $this->belongsTo('Question');
    }

我如何获得答案?我不能使用;

$answers = $question->answer()->get;

我不能用

//get the questions using query, but this returns nothing
$questions = Question::where('quiz_id', '=', $id);
$answers = $questions->answer()->get;

我希望我足够清楚,我尝试搜索但我找不到任何东西,请任何人帮助:)?

【问题讨论】:

    标签: php laravel orm model eloquent


    【解决方案1】:

    您可以使用eager loading 获得答案嵌套在问题内的结果:

    $questions = $quiz->question()->with('answer')->get();
    

    如果您只想获得一个问题的答案,请执行以下操作:

    $question = Question::find(1);
    $answers = $question->answer()->get();
    

    或者干脆使用动态属性:

    $answers = $question->answer;
    

    旁注:我建议你用复数形式命名hasMany关系。 answers 而不是 answer。这在语义上更有意义,并清楚地告诉您结果是集合还是单个模型。

    【讨论】:

    • 渴望加载工作。关于旁注;好东西要记住,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-02-20
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 2019-06-17
    相关资源
    最近更新 更多