How to save array in a single field in msql

0

I have a problem I have 3 tables in which in the first two the data is saved correctly, but in the last table only the value of subject1 and code-subject1 are saved for each iteration of the for cycle, I think the problem is in the form of how I should save the indexes of the array in a single field of the table. I appreciate your help

My driver's code

 $pensum = new Pensum ();
    $pensum  ->carrera = $request ->carrera;
    $pensum  ->regimen = $request ->regimen;
    $pensum  ->vigencia = $request ->vigencia;
    $pensum ->numerosemestres = $request ->numerosemestres;
    $pensum -> save();

    for ($i = 0; $i < count($request->asignatura1) ; $i++) {
    $semestre = array();

    $semestre= new Semestre ();
    $semestre->semestre = $request->numerodesemestre[$i];
    $pensum ->semestre()->save($semestre);


    $asignatura= new Asignatura ();

    $asignatura->nombreasignatura= $request->asignatura1[$i];
    $asignatura->codigoasignatura = $request->codigoasignatura1[$i];

    $asignatura->nombreasignatura= $request->asignatura2[$i];
    $asignatura->codigoasignatura = $request->codigoasignatura2[$i];

    $asignatura->nombreasignatura= $request->asignatura3[$i];
    $asignatura->codigoasignatura = $request->codigoasignatura3[$i];

    $semestre->asignatura()->save($asignatura);

    }

I have achieved the solution by replacing my cycle for now it saves all the subject data in only two fields of the subject table, independent of the number of semesters. Thanks for your help

if ($ request - > status == 3) {

$pensum = new Pensum ();
$pensum  ->carrera = $request ->carrera;
$pensum  ->regimen = $request ->regimen;
$pensum  ->vigencia = $request ->vigencia;
$pensum ->numerosemestres = $request ->numerosemestres;
$pensum -> save();




for ($i = 0; $i < count($request->numerodesemestre) ; $i++) {


$semestre= new Semestre ();
$semestre->semestre = $request->numerodesemestre[$i];
$pensum ->semestre()->save($semestre);





 $registro = Asignatura::create([ 'nombreasignatura' => $request->asignatura1[$i], 'codigoasignatura' => $request->codigoasignatura1[$i], ]
);
$semestre->asignatura()->save($registro);

 $registro = Asignatura::create([ 'nombreasignatura' => $request->asignatura2[$i], 'codigoasignatura' => $request->codigoasignatura2[$i], ]);
$semestre->asignatura()->save($registro);


$registro = Asignatura::create([ 'nombreasignatura' => $request->asignatura3[$i], 'codigoasignatura' => $request->codigoasignatura3[$i], ]);
$semestre->asignatura()->save($registro);



}
    
asked by Jcastillovnz 30.10.2017 в 21:45
source

2 answers

0

Subject :: create ([    'nombreasignatura' = > $ request- > subject2 [$ i],    'codecode' = > $ request- > codigoasignatura2 [$ i], ]);

Leave this in the for for each round to keep a different object.

    
answered by 30.10.2017 в 22:32
0

The solution is as follows. You must first encode the array to JSON format.

$array = array( array('Elemento1' => '500', 'Elemento2'=> '50', 'Elemento3' => '0'));

$array_json = json_encode($array);

$consulta = $con -> query ("INSERT INTO tabla campo_array VALUES ('$array_json') WHERE id=1");

Once you codified and inserted the JSON element in your BD, you will observe it like that.

  

[{"Element1": "500", "Element1": "50"}]

To decode it would be like this:

$arrayBD = json_decode($array ,true);
    
answered by 07.07.2018 в 00:21