我已经使用AngularJS更新了我的显示数据项目的视图,现在我遇到问题,当我更改项目的URL地址ID时,方法show()
没有显示404错误 - 项目没有属于登录用户,而不是我收到此错误。
尝试获取非对象的属性(查看:C:\ www \ htdocs \ laravel \ resources \ views \ backend \ partials \ project \ single-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);
}
}
我在哪里犯了错误或必须改变什么?
答案 0 :(得分: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');
}
试试这个