2015-11-24 3 views
0

Я обновил свое представление для отображения данных - проектов с помощью AngularJS, и теперь у меня возникла проблема, когда при изменении URL-адреса идентификатора проекта метод show() не показывал 404 error - проект не принадлежит зарегистрированному пользователю, вместо этого я получаю эту ошибку.Laravel 5.1: Попытка получить свойство не-объекта

Попытка получить свойство не-объекта (Вид: C: \ WWW \ HTDOCS \ Laravel \ ресурсы \ вид \ бэкенд \ обертоны \ Проект \ одного project.blade.php)

Прежде чем я обновил свое мнение для работы с AngularJS, все было хорошо.

Мой угловой регулятор:

freelo.controller('mainCtrl', ['$scope', '$http', function($scope, $http) { 

$scope.projects = []; 
$http.get('api/userProjects') 
    .then(function(response) { 
     $scope.projects = response.data; 
    }); 
}]); 

app.js Мои:

var freelo = angular.module('freelo', []); 

Способ извлечения пользовательских проектов:

public function getProjectsInJson(){ 
    $project = Project::where('user_id', '=', $this->getCurrentUserId())->get(); 

    return response()->json($project); 
} 

И мой show() метод в ProjectsController:

public function show($id){ 
    $project = Project::where('id','=', $id) 
         ->where('user_id', '=', $this->getCurrentUserId()) 
         ->first(); 
    $user = DB::table('projects') 
     ->join('users', 'projects.user_id', '=', 'users.id') 
     ->join('profiles', 'users.id', '=', 'profiles.user_id') 
     ->select('users.id','profiles.username') 
     ->where('projects.id','=', $id) 
     ->get(); 

    if(!$project && !$user){ 
     abort(404); 
    }else{ 
     return view('backend.partials.project.single-project')->with('project', $project)->with('user', $user); 
    } 
} 

Где я совершил ошибку или что нужно изменить?

ответ

1
public function show($id){ 
    try{ 
     $project = Project::where('id','=', $id) 
       ->where('user_id', '=', $this->getCurrentUserId()) 
       ->with(['user', 'user.profile']) 
       ->firstOrFail(); 
    }catch(\ModelNotFoundException $e){ 
     abort(404); 
    }  

    return view('backend.partials.project.single-project')->with('project', $project); 
    } 

модель проекта будет как

public function user() 
{ 
return $this->belongsTo('\User', 'user_id'); 
} 

модель Пользователь:

public function profile() 
{ 
return $this->hasOne('\Profile', 'user_id', 'id'); 
} 

Попробуйте один

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