@prdimak
Начинающий Laravel разработчик

Как создать запись в главной таблице и в связующей Laravel?

Мне нужно создать API для вопросника. Есть 3 таблицы/модели Test, Question, Answer.
Все связаны цепочкой один ко многим
Есть
Route::post('test', 'Api\TestController@createTest');

В TestController описываю метод createTest(Request $request).

Предполагается, что данные вводятся так: Название теста (в таблице tests) и один или несколько вопросов (в таблице questions). И вот вопрос: Как организовать этот метод что бы сразу в 2 таблицы записывались данные, а если несколько вопросов то все связывались с тем же тестом?

public function createTest(Request $request)
    {
        $rules = [
            'name' => 'required',
            'question' => 'required',
        ];
        $validator = Validator::make($request->all(), $rules);
        if ($validator->fails()) {
            return response()->json($validator->errors(), 400);
        }
        $test = Test::create($request->only('name'));

//  а тут как-то еще нужно и вопросы записать..

        return response()->json($test, 201);
    }

class Test extends Model
{
    public function questions()
    {
        return $this->hasMany(Question::class);
    }
    protected $fillable = [
        'name',
    ];
}

class Question extends Model
{
    public function test()
    {
        return $this->belongsTo(Test::class);
    }
    public function answers()
    {
        return $this->hasMany(Answer::class);
    }
    protected $fillable = [
        'test_id',
        'body',
    ];
}
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы