0

Laravel 4 でアンケートを書いていますが、ユーザーが同じアンケートに何度も回答できるようにする必要があります (また、回答を別のインスタンスとして保存することもできます)。

現在、ユーザーを招待された調査にリンクする、survey_user というピボット テーブルがあります。ピボット テーブルの潜在的に良い副作用は、その主キーを使用して一意の調査インスタンスを作成できることです。

私の問題は、具体的にはユーザーモデルを通じて、答えを得る方法を考え出すことです. Answers テーブルには、ピボット テーブルのプライマリへの外部キーが含まれます。

私のユーザーモデル:

class User extends Eloquent {
  public function surveys() {
    return $this->belongsToMany('Survey', 'survey_user')
                ->withPivot('id', 'completed_at');
  }

  public function answers() {
     // This should return all of the user's answers, irrespective of 
     // survey id's.
  }
}

テーブル:

surveys: id
users: id
survey_user: id, survey_id, user_id, completed_at
answers: survey_user_id, answer_text, ...

どうすればこの疑似関係を達成できますか、またはおそらくより良い構造化方法ですか?

4

1 に答える 1

0

関係を使用してください!これが私がそれを行う方法です:

class User extends Eloquent {
    public function surveys() {
        return $this->belongsToMany('Survey');
    }

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

class Survey extends Eloquent {
    public function surveys() {
        return $this->belongsToMany('User');
    }

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

class Answer extends Eloquent {
    public function survey() {
        return $this->belongsTo('Survey');
    }

    public function user() {
        return $this->belongsTo('User');
    }
}
于 2013-11-08T15:23:03.333 に答える