Laravel 관계 Gotcha

3702 단어 phpwebdevlaravel
라라벨은 좋습니다. 그것은 당신이 고통없이 관계를 정의할 수 있습니다.

// app/MultipleChoiceQuestion.php
class MultipleChoiceQuestion extends Model
{
    public function answers()
    {
        return $this->hasMany(\App\Answer::class);
    }
}


우리는 다른 방향으로 관계를 맺을 수도 있습니다.

// app/Answer.php
class Answer extends Model
{
    public function question()
    {
        return $this->belongsTo(\App\MultipleChoiceQuestion::class);
    }
}


질문을 쿼리할 때 질문에 대한 답변을 자주 쿼리한다는 사실을 알고 있다면 기본적으로 즉시 로드하는 것이 좋습니다.

// app/MultipleChoiceQuestion.php
class MultipleChoiceQuestion extends Model
{
    protected $with = ['answers'];

    public function answers()
    {
        return $this->hasMany(\App\Answer::class);
    }
}


그러나 우리가 답에 질문을 열망하게 로드하면 어떻게 될까요?

// app/Answer.php
class Answer extends Model
{
    protected $with = ['question'];

    public function question()
    {
        return $this->belongsTo(\App\MultipleChoiceQuestion::class);
    }
}


혼돈. 질문을 쿼리할 때 해당 답변을 쿼리하고 해당 답변이 속한 질문에 대해 쿼리합니다.

당신의 관계는 어딘가에서 종료되어야 합니다.

좋은 웹페이지 즐겨찾기