AngularJS属于To-hasMany关系

时间:2014-03-25 12:04:32

标签: javascript angularjs laravel

我正在尝试使用Laravel使用AngularJs。我已阅读并观看了许多内容,但我找不到使用Laravel关系的任何内容。我的帖子和作者模型之间有很多关系。当使用刀片我可以使用{{$post->author->name}}获取作者姓名

现在我正在尝试使用angularjs。

    class Post extends Eloquent {
    public function author()
        {
            return $this->belongsTo('Author');
        }
    }

    class Author extends Eloquent { 
     public function posts()
        {
            return $this->hasMany('Post');
        }
    }

class UserController extends BaseController {

    public function getIndex(){
        $posts = Post::where('id','<','10')->get();
        return Response::json($posts);
    }

}

使用js文件:

// public/js/controllers/mainCtrl.js
angular.module('mainCtrl', [])
    .controller('mainController', function($scope, $http, Post) { 
        $scope.postsData = {};
        // loading variable to show the spinning loading icon
        $scope.loading = true;

        Post.get()
            .success(function(data) {
                $scope.posts = data;
                $scope.loading = false;
            });
           //dont know how to get author here in foreach method 
           angular.forEach($scope.posts,function(post)...


    });

// public/js/services/commentService.js
angular.module('postService', [])
    .factory('Post', function($http) {

        return {
            // get all the posts
            get : function() {
                return $http.get('/api/posts/');
            }
        }
    });

<div class="comment" ng-hide="loading" ng-repeat="post in posts">
        <h3>Comment #{{ post.id }} </h3> <p>{{post.title}}</p>
        {{post.author_id}} / {{post.author.name}}
</div>

我接近解决方案,但仍然困惑如何在Post服务中获取作者姓名。任何帮助都表示赞赏。

由于

1 个答案:

答案 0 :(得分:2)

在您的用户控制器中,在检索帖子时急切加载作者,这样就可以通过post.author

以角度访问它
public function getIndex(){
    $posts = Post::with('author')->where('id','<','10')->get();
    return Response::json($posts);
}