Сохранить более одной записи в Laravel

У меня есть форма со следующими полями

  • Имя
  • Отцовская и материнская фамилия
  • Возраст
  • Пол
  • Рост
  • Вес

Ситуация такова, что «рост и вес» хранятся в одной таблице, а остальные поля - в независимой.

И в качестве примера: когда два пользователя используют эту форму, моя функция в контроллере сохраняет две соответствующие записи, однако в таблице «info_medicas», где «рост и вес» хранятся в поле «id» человек регистрирует меня только по первому «идентификатору»

Записи в моей карте людей introducir la descripción de la imagen aquí

Записи в моей медицинской информационной карте introducir la descripción de la imagen aquí

И, наконец, эту функцию я использую для сохранения этих записей

public function guardar_activacion(Request $request){
    activacion_participantes::create([
        'nombre' => $request['nombre'],
        'appaterno' => $request['appaterno'],
        'apmaterno' => $request['apmaterno'],
        'edad' => $request['edad'],
        'sexo' => $request['sexo'],
        'id_municipio' => $request['id_municipio'],
        'id_evento' => $request['id_evento']
    ]);

    info_medicas::create([
        'estatura' => $request['estatura'],
        'peso' => $request['peso'],
        'id_part_activ' => $request['id_part_activ']
    ]);

    return redirect("participante-activacion")->with('status','ATENCIÓN: El registro se insertó exitosamente');
}

Участники_ модель активации

class activacion_participantes extends Model
{
     use SoftDeletes;
     protected $primaryKey = 'id_part_activ';
     protected $fillable = ['id_part_activ','nombre','appaterno','apmaterno','edad','sexo','id_municipio','id_evento'];
     protected $date = ['deleted_at'];

     public function infos(){
          return $this->belongsTo('App\info_medicas','id_part_activ');
     }
}

Модель Medical_info

class info_medicas extends Model
{
     use SoftDeletes;
     protected $primaryKey = 'id_info_medica';
     protected $fillable = ['id_info_medica','estatura','peso','medida_cintura','medida_cadera','medida_brazo','medida_muslo','medida_pantorrilla','avance','id_part_activ'];
     protected $date = ['deleted_at'];

     public function participantes(){
         return $this->belongsTo('App\activacion_participantes','id_part_activ');
     }
}

Я надеюсь, что кому-то удастся помочь мне, я был бы признателен

1
задан 27.11.2019, 20:06
1 ответ

Тебя определило обе связи как belongsTo. Одна из них, infos я предполагаю, deber¦, - чтобы быть hasOne или hasMany, завися, если у него могут быть каждые activacion_participantes один или несколько info_medicas связанных.

Смоделировал activacion_participantes

class activacion_participantes extends Model
{
     public function infos(){
          return $this->hasOne('App\info_medicas','id_part_activ');
     }
}

Я моделирую info_medicas

class info_medicas extends Model
{
     public function participantes(){
         return $this->belongsTo('App\activacion_participantes','id_part_activ');
     }
}

Потом в твоем funci¦n guardar_activacion , ты можешь создавать реестр для activacion_participantes и использовать relaci¦n, определенный, чтобы создавать связанный реестр info_medicas:

public function guardar_activacion(Request $request){
    $activacion_participantes = activacion_participantes::create([
        'nombre' => $request['nombre'],
        'appaterno' => $request['appaterno'],
        'apmaterno' => $request['apmaterno'],
        'edad' => $request['edad'],
        'sexo' => $request['sexo'],
        'id_municipio' => $request['id_municipio'],
        'id_evento' => $request['id_evento']
    ])
    // aquí, como el método activacion_participantes::create() va a devolver la instancia del modelo que acabas de crear, puedes usar la relación infos() para crear el registro de info_medicas relacionado
    $activacion_participantes->infos()->create([ 
        'estatura' => $request['estatura'],
        'peso' => $request['peso'],
    ]);

    return redirect("participante-activacion")->with('status','ATENCIÓN: El registro se insertó exitosamente');
}

ЗАМЕЧАЕТ: Не использовав Соглашений Модели Элокент , deberÃ: s добавлять вручную имя подмостков к моделям с protected $table = 'el_nombre_de_la_tabla';, и возможно ademÃ: s ключей forÃ: neas, también локальные ключи для связей $this->hasOne('App\Model', 'foreign_key', 'local_key');.

1
ответ дан 01.12.2019, 10:45