Как сохранить 2 поля в 2 разных таблицах с такой структурой? — Ларавель

#php #laravel #laravel-6

Вопрос:

Я думаю , что поступаю правильно, потому что, когда я отправляю информацию в форме, она просто сохраняется nif table1 , но не nif_table2 в table2 ней .

2 таблицы имеют связь благодаря их ID_tableX, больше нет никаких полей.

Я не вижу никакой ошибки, поэтому я думаю, что главная проблема в моделях, вы что-нибудь видели?

EnviarCurriculum.php

 namespace App;

use IlluminateDatabaseEloquentModel;

class EnviarCurriculum extends Model
{
    protected $table = 'table1';

    protected $primaryKey = 'ID_table1';

    protected $fillable = [
        'nif'
    ];

    public function enviarcurriculumpreguntas()
    {
        return $this->belongsTo(EnviarCurriculumPreguntas::class);
    }
}
 

EnviarCurriculumPreguntas.php

 namespace App;

use IlluminateDatabaseEloquentModel;

class EnviarCurriculumPreguntas extends Model
{
    protected $table = 'table2';

    protected $primaryKey = 'ID_table2';

    protected $fillable = [
        'nif_table2'
    ];
}
 

EnviarCurriculumController.php

 namespace AppHttpControllersenviarCurriculum;

use AppEnviarCurriculum;
use AppConfiguracion;
use AppHttpControllersController;
use IlluminateHttpRequest;

class EnviarCurriculumController extends Controller
{
    public function index()
    {
        return view('enviar_curriculum', ['EnviarCurriculum' => new EnviarCurriculum()]);
    }

    public function create()
    {
        return view('enviar_curriculum', ['EnviarCurriculum' => new EnviarCurriculum()]);
    }

    public function store(Request $request)
    {
        EnviarCurriculum::create($request->validated());
    }
}
 

enviar_curriculum.blade.php

 <!DOCTYPE html>
<html lang="es">
<head>
    ...
</head>
<body>

    <form action="{{ route("store") }}" method="POST">
        @csrf
        
        <input type="text" name="nif" id="nif">

        <input type="text" name="nif_table2" id="nif_table2">

        <input type="submit" class="btn btn-primary" value="Enviar"> 
    </form>
</body>
</html>
 

Ответ №1:

Я просто должен поставить

EnviarCurriculumPreguntas::создать($запрос->проверено());

в EnviarCurriculumController.php

 namespace AppHttpControllersenviarCurriculum;

use AppEnviarCurriculum;
use AppEnviarCurriculumPreguntas;
use AppConfiguracion;
use AppHttpControllersController;
use IlluminateHttpRequest;
use AppHttpRequestsStoreEnviarCurriculumPost;

class EnviarCurriculumController extends Controller
{
    public function index()
    {
        $configuraciones = Configuracion::orderBy('valor')->get();

        return view('enviar_curriculum', ['EnviarCurriculum' => new EnviarCurriculum(), 'configuraciones' => $configuraciones]);
    }

    public function create()
    {
        $configuraciones = Configuracion::orderBy('valor')->get();

        return view('enviar_curriculum', ['EnviarCurriculum' => new EnviarCurriculum(), 'configuraciones' => $configuraciones]);
    }

    public function store(StoreEnviarCurriculumPost $request)
    {
        EnviarCurriculum::create($request->validated());
        EnviarCurriculumPreguntas::create($request->validated());

        return back()->with('status', '¡Curriculum creado con éxito!');
    }
}
 

Я профессионал, т. е.