El problema que tengo es que no se como puedo usar los datos de una consulta en una vista si alguien me puede dar una idea seria, el formulario que uso es este pero me da un error:

Mi controladora:

public function edit($id){
    $datosProfesor = DB::table('profesor')->where('id', $id)->get();
    $institucionDB = DB::table('institucion')->get();
    $datos = array('datosProfesor' => $datosProfesor, 'institucionDB' => $institucionDB);
    return view('profesorView/editarProfesor', $datos);
}

Mi punto de vista:

<div class="form-group">
   <h4>Nombre</h4>
   <input type="text" name="nombre_profesor" id="nombre_profesor" class="form-control" placeholder= 'Nombre' value="{{$datosProfesor['id']}}">
</div>

El error que me aparece es este:

Undefined index: id (View: /var/www/html/Konecte/resources/views/profesorView/editarProfesor.blade.php)
0
Tprogramer 5 dic. 2016 a las 20:47

1 respuesta

La mejor respuesta

El método get() devuelve un Illuminate\Support\Collection que contiene los resultados donde cada resultado es una instancia del objeto PHP StdClass. Puede acceder al valor de cada columna accediendo a la columna como una propiedad del objeto:

foreach ($datosProfesor as $profesor) {
    echo $profesor->id;
}

Si desea obtener un solo resultado, puede usar el método find() como:

$datosProfesor = DB::table('profesor')->find($id);

Que es una forma corta de:

$datosProfesor = DB::table('profesor')->where('id', $id)->first();

Solo un consejo más para ti de que puedes usar el método compact() de PHP para crear una matriz que contenga variables y sus valores. Para que puedas deshacerte de la línea

$datos = array('datosProfesor' => $datosProfesor, 'institucionDB' => $institucionDB);

Su código final se verá como:

public function edit($id){
    $datosProfesor = DB::table('profesor')->find($id);
    $institucionDB = DB::table('institucion')->get();
    return view('profesorView/editarProfesor', compact('datosProfesor', 'institucionDB'));
}
0
Amit Gupta 5 dic. 2016 a las 22:51