Это может быть не лучший ответ, но вы можете использовать одну форму для перехода к контроллеру, а затем передать данные в несколько хранилищ.
route.php
Route::resource('student', 'StudentController');
StudentController.php
public function __constructor(StudentRepository $student, HobbyRepository $hobby)
{
$this->student = $student;
$this->hobby= $hobby;
}
public function store(Request $request)
{
$data = $request->all();
$hobby = [
'hobby' => $data['hobby'],
'schedule' => $data['schedule'],
'intensity' => $data['intensity'],
'diet' => $data['diet'],
];
$student = [
'student_name' => $data['student_name'],
'age' => $data['age'],
'height' => $data['height'],
'weight' => $data['weight'],
'bmi' => $data['bmi'],
];
$this->student->store($student);
$this->hobby->store($hobby);
//your other codes.
}
StudentRepository.php
public function store($data)
{
// your implementation on storing the user.
}
HobbyRepository.php
public function store($data)
{
// your implementation on storing the hobby.
}
Вы можете использовать любой метод и переменные для передачи данных от контроллера. Надеюсь это поможет.
Edit:
Для вашего расширенного вопроса о хранении и извлечении информации.
Как указано в документации:
The create method returns the saved model instance:
$flight = App\Flight::create(['name' => 'Flight 10']);
Для получения дополнительной информации обратитесь к документации:
https://laravel.com/docs/5.3/eloquent#inserts
Если вы хотите передать student id
в hobby
простейшем метод заключается в том, чтобы вернуть ученика от StudentRepository
и передать его на HobbyRepository
.
например:
StudentRepository.php
public function store($data)
{
// your implementation on storing the user.
$student = [] // array of the student informations to be stored.
return Student::create($student); //you will have student information here.
}
StudentController.php
$student = $this->student->store($student); //store the student information and get the student instance.
$this->hobby->store($hobby, $student->id); //pass it to the hobby to store id.
Вы должны изменить hobbyRepository
магазин, чтобы использовать student id
.
Это может устранить вашу расширенную проблему.
Вы можете использовать перенаправление на метод [action] (https://laravel.com/docs/5.4/responses#redirecting-controller-actions) или вы можете извлечь эту логику для службы – jarguez01
thx для предложения..going с выпиской на службу – Mikethetechy