【问题标题】:Laravel 5.1: Trying to get property of non-objectLaravel 5.1:试图获取非对象的属性
【发布时间】:2015-11-24 11:29:00
【问题描述】:

我已经更新了用于显示数据的视图 - 项目,使用 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);
}

还有我在ProjectsController 中的show() 方法:

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

我在哪里犯了错误或必须改变什么?

【问题讨论】:

    标签: angularjs laravel laravel-5.1


    【解决方案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');
    }
    

    试试这个

    【讨论】:

      猜你喜欢
      • 2015-10-15
      • 2018-07-14
      • 2015-10-08
      • 2015-09-22
      • 2017-03-20
      • 2014-03-25
      • 2015-01-25
      • 2014-06-23
      相关资源
      最近更新 更多