将数据从查询传递到视图

Pass data from a query to a view

我遇到的问题是,如果有人能给我一个认真的想法,我不知道如何在视图中使用查询数据,我使用的表格是这样的,但它给了我一个错误:

我的控制器:

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);
}

我的看法:

<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>

我出现的错误是这样的:

Undefined index: id (View: /var/www/html/Konecte/resources/views/profesorView/editarProfesor.blade.php)

get() 方法 returns 包含结果的 Illuminate\Support\Collection,其中每个结果都是 PHP StdClass 对象的一个​​实例。您可以通过将列作为对象的 属性 进行访问来访问每一列的值:

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

如果你想得到一个结果,那么你可以使用 find() 方法:

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

这是以下的缩写形式:

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

再给您一个提示,您可以使用 PHP 的 compact() 方法来创建包含变量及其值的数组。这样你就可以去掉 line

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

您的最终代码将如下所示:

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