2016-01-13 67 views
2

我有3個表tests,questions,options如何在Laravel中基於嵌套數組插入關係?

正如你能想象

  1. 測試,有許多問題
  2. 問題屬於測試
  3. 一個問題有許多選項
  4. 選項屬於一個問題

這些關係已經在模型中設置。

我從前端的數據以這種形式:

array:3 [ 
    "name" => "First Test" 
    "preparation" => "First Test prep" 
    "questions" => array:2 [ 
    0 => array:2 [ 
     "title" => "Some question" 
     "options" => array:4 [ 
     0 => "a" 
     1 => "b" 
     2 => "c" 
     3 => "d" 
     ] 
    ] 
    1 => array:2 [ 
     "title" => "Another question" 
     "options" => array:4 [ 
     0 => "e" 
     1 => "f" 
     2 => "g" 
     3 => "h" 
     ] 
    ] 
    ] 
] 

這個數據完全代表這些關係。事實上,如果我使用的是NoSql數據庫,我只會將其存儲在數據庫中。

我的問題是「在Laravel使用雄辯的同時存儲所有這些數據的最佳方法是什麼?」?

注意:這是在Laravel的收集形式。

回答

0

您必須從給定數據創建模型對象的結構。 JMS Serializer是一個偉大的庫,它有laravel integration

1
class Test extends Model { 

    $table = 'tests'; 
    function questions(){ 
       return $this->hasMany(Question::class, 'test_id'); 
      } 

} 

class Question extends Model { 

    $table = 'questions'; 
    function answers(){ 
     return $this->hasMany(Answer::class, 'question_id'); 
      } 

    function test(){ 
     return $this->belongsTo(Test::class, 'test_id'); 
    } 

} 

class Answer extends Model { 

    $table = 'answers'; 

    function question(){ 
     return $this->belongsTo(Question::class, 'question_id'); 
    } 

} 

當然我只顯示關係,表和外鍵。 您可以將任何其他數據添加到您的模型。

+0

老兄我已經做到了。這不是我問的問題:) – RandomCoder

+0

好的。我不明白你的問題。抱歉) –