如何在Laravel中基于嵌套数组插入关系?

时间:2016-01-13 04:51:37

标签: php mysql laravel eloquent

我有3个表testsquestionsoptions

你可以想象

  1. 测试有很多问题
  2. 一个问题属于测试
  3. 一个问题有很多选择
  4. 选项属于问题
  5. 这些关系已在模型中设置。

    我以这种形式从前端获得了数据:

    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系列的形式。

2 个答案:

答案 0 :(得分: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');
    }

}

当然我只展示了关系,表格和外键。 您可以向模型添加任何其他数据。

答案 1 :(得分:0)

您必须从给定数据创建模型对象的结构。 JMS Serializer是一个很棒的库,它有laravel integration