2016-12-09 2 views
0

Я застрял с этой ошибкой в ​​Laravel:Попытки получить свойство необъектной Laravel 5.3, index.blade

Попытка получить свойство не-объекта (вид: C: ... \ ресурсы \ views \ admin \ users \ index.blade.php)

Что-то не так с моим кодом?

Это мой индекс

@extends('layouts.admin') 


@section('content') 

    <h1>Users</h1> 


    <table class="table"> 
     <thead> 
     <tr> 
      <th>Id</th> 
      <th>Name</th> 
      <th>Email</th> 
      <th>Role</th> 
      <th>Status</th> 
      <th>Created</th> 
      <th>Updated</th> 
      <th>Photo</th> 
     </tr> 
     </thead> 
     <tbody> 

     @if($users) 

      @foreach($users as $user) 

     <tr> 
      <td>{{$user->id}}</td> 
      <td>{{$user->name}}</td> 
      <td>{{$user->email}}</td> 
      <td>{{$user->role->name}}</td> 
      <td>{{$user->active == 1 ? 'Active' : 'Not Active'}}</td> 
      <td>{{$user->created_at->diffForHumans()}}</td> 
      <td>{{$user->updated_at->diffForHumans()}}</td> 
      <td>{{$user->photo_id}}</td> 
     </tr> 
       @endforeach 
      @endif 
     </tbody> 
    </table> 
@stop 

Это мой контроллер

public function index() 
    { 
     // 
     $users = User::all(); 

     return view('admin.users.index', compact('users')); 
    } 

    /** 
    * Show the form for creating a new resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function create() 
    { 
     // 
     $roles = Role::pluck('name','id')->all(); 

     return view('admin.users.create', compact('roles')); 
    } 

    /** 
    * Store a newly created resource in storage. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @return \Illuminate\Http\Response 
    */ 
    public function store(UsersRequest $request) 
    { 
      //Buat bikin create dengan method ini 

     User::create($request->all()); 

     return redirect('/admin/users'); 

//  return $request->all(); 
    } 

    /** 
    * Display the specified resource. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function show($id) 
    { 
     // 
     return view('admin.users.show'); 
    } 

    /** 
    * Show the form for editing the specified resource. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function edit($id) 
    { 
     // 
     return view('admin.users.edit'); 
    } 

    /** 
    * Update the specified resource in storage. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function update(Request $request, $id) 
    { 
     // 
    } 

    /** 
    * Remove the specified resource from storage. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function destroy($id) 
    { 
     // 
    } 
} 

Это мой запрос

class UsersRequest extends FormRequest 
{ 
    /** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     return true; 
    } 

    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     return [ 
      // 
      'name'=>'required', 
      'password'=>'required', 
      'email'=>'required', 
      'active'=>'required', 
      'role_id'=>'required', 
      'photo_id'=>'required|image|mimes:jpeg,png,jpg,gif,svg|max:7098', 
     ]; 
    } 
} 
+1

более подробную информацию? номер строки может быть? –

ответ

0

Это означает (внутри контроллера)

$users = User::all(); 

возвращает пустой объект. В db нет пользователей. Ошибка, вероятно, происходит от (админ/пользователей/index.blade.php)

{{$user->id}} 

и другие линии следуют, а также.

Прежде чем перебирать пользователей, проверьте, не являются ли данные пустыми. Исправьте эту строку

@if($users) 

посмотреть, как этот

@if($users->toArray()) 

Он возвращает пустой массив, если нет никаких записей для пользователей и никогда не входят в цикл. Это исправит вашу ошибку.

PS: Put an else statement for the @if statement with proper message so you can know it worked.

+0

спасибо, сэр за помощь –

0

Пожалуйста, измените эту строку

<td>{{$user->role->name}}</td> 

к

<td>{{ $user->role ? $user->role->name : '-' }}</td> 

Должно работать сейчас ... :)

+0

Спасибо, сэр, это работа –

Смежные вопросы