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

标签 php mysql laravel eloquent

我有 3 个表 testsquestionsoptions

如你所想

  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 中使用 Eloquent 时,一次存储所有这些数据的最佳方式是什么”?

注意:是Laravel集合的形式。

最佳答案

 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');
    }

}

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

关于php - 如何在 Laravel 中插入基于嵌套数组的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34758623/

相关文章:

php - Laravel 5.4 - 在哪里更改登录 ID

php - Laravel - 无法使用 'Where' 查询过滤数据库

php - Livewire 分页删除记录后返回 404 not found

php - 两个 while 循环到单个数组?

php - 覆盖 laravel 验证消息

php - 尝试使用 Android 和 PHP 插入 MYSQL 时出错

php - 使用 session 确保登录脚本安全

php - Laravel Cache (Redis) 数据改变时自动刷新

php - 如何使用多个where Codeigniter搜索数据

php - 如何正确进行INNER JOIN? mysql