面对Laravel中的错误

时间:2017-06-12 04:51:38

标签: laravel

我正在创建管理面板。当用户更新其配置文件时,使用路由名userid通过更新控制器方法读取其update。更新控制器方法返回视图updatedata以及数组。我正在使用ORM DATABASE

控制器

public function update($id)
{
   $records = Register::find($id);
   return view('updatedata',['records' => $records]);  
}

模板

@extends('layout/master')
@section('content')
<h1 align="center">

@foreach($records as $records)
{!!  Form::open(['route'=>'f.update'])   !!}
<table border="2" align="center">
  <tr>
     <td>{!! Form::label('name','Name') !!}</td>
       <td>{!!  Form::text('name',$records->name) !!}</td>
    </tr>
    <tr>
       <td>{!!Form::label('phone','Phone')!!}</td>
       <td>{!! Form::text('phone',$records->phone) !!}</td>
    </tr>
    <tr>
       <td>{!! Form::label('email','E-mail') !!}</td>
       <td>{!! Form::email('email',$records->name) !!}</td>
    </tr>
    <tr>
       <td>{!! Form::label('course','Course') !!}</td>
       <td>{!! Form::select('course',['MCA'=>'MCA','BTECH'=>'BTECH','BCA'=>'BCA'],$records->course)                                               !!}</td>
    </tr>
    <tr>
       <td>{!! Form::label('address','Address') !!}</td>
       <td>{!! Form::textarea('address', $records->address, ['size' => '30x3']) !!}</td>
    </tr>
    <tr>
      <td colspan="2">
        {!! Form::hidden('id',$records->id) !!}
      </td>
    </tr>
    <tr>
       <td colspan="2" align="center">{!!  Form::submit() !!}</td>
    </tr>

</table>

{!!  Form::close()                                    !!}
@endforeach 
</h1>
@endsection

错误

  

2/2
  4de1c6468785010f583b37a90fa7bed16c4e92a7.php第10行中的ErrorException:
  试图获取非对象的属性(查看:C:\ xampp \ htdocs \ laravel \ resources \ views \ updatedata.blade.php)

请帮忙。

1 个答案:

答案 0 :(得分:2)

当您使用find Eloquent方法时,它会返回one模型。

$record = Register::find($id);

如果您需要多个型号,则需要使用get方法。例如:

$records = Register::whereIn('id', [1, 2, 3])->get();

在您看来,您尝试使用foreach循环来迭代模型集合。但是你只有一个。

// controller
public function update($id)
{
    $record = Register::findOrFail($id);
    return view('updatedata', compact('record'));  
}

// view
@extends('layout/master')

@section('content')
    {!!  Form::open(['route' => ['f.update', $record->id]])   !!}
        <table border="2" align="center">
          <tr>
             <td>{!! Form::label('name','Name') !!}</td>
               <td>{!!  Form::text('name', $record->name) !!}</td>
            </tr>
            <tr>
               <td>{!!Form::label('phone','Phone')!!}</td>
               <td>{!! Form::text('phone', $record->phone) !!}</td>
            </tr>
            <tr>
               <td>{!! Form::label('email','E-mail') !!}</td>
               <td>{!! Form::email('email', $record->name) !!}</td>
            </tr>
            <tr>
               <td>{!! Form::label('course','Course') !!}</td>
               <td>{!! Form::select('course', ['MCA'=>'MCA','BTECH'=>'BTECH','BCA'=>'BCA'], $record->course) !!}</td>
            </tr>
            <tr>
               <td>{!! Form::label('address','Address') !!}</td>
               <td>{!! Form::textarea('address', $record->address, ['size' => '30x3']) !!}</td>
            </tr>
            <tr>
              <td colspan="2">
                {!! Form::hidden('id', $record->id) !!}
              </td>
            </tr>
            <tr>
               <td colspan="2" align="center">{!!  Form::submit() !!}</td>
            </tr>
        </table>
    {!!  Form::close() !!}
@endsection

最后,将<form>包含在<h1>元素中并不是一个好习惯。