我有 3 个表 tests
、questions
、options
。
如你所想
- 一个测试有很多问题
- 一个问题属于一个测试
- 一个问题有很多选项
- 一个选项属于一个问题
这些关系已经在模型中建立起来了。
我以这种形式从前端获取数据:
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/