Laravel / Angularjs:使用较少的查询插入数据透视表

时间:2014-03-23 20:45:24

标签: javascript php angularjs laravel

我成功地创建了一个简单的"添加主题"用于测试laravel的枢轴操作的形式。它由标题,正文和标记复选框组成。我的模型是PostTag和支点PostTag

在阅读了有关更新数据透视表的Laravel文档之后,在我看来,我提出了太多查询,只是创建一个新主题并更新数据透视表。另外,我传递复选框值(标签)的方式对我来说似乎有点草率。

这是我的Angular控制器:

app.controller('NewPostController', function($scope, $http) {
    $scope.selection = [];
    $http.get('/new_post').success(function(tags) {
    $scope.tags = tags;
});

$scope.toggleSelection = function toggleSelection(tag) {
    var idx = $scope.selection.indexOf(tag);

    // is currently selected
    if (idx > -1) {
        $scope.selection.splice(idx, 1);
    }

    // is newly selected
    else {
        $scope.selection.push(tag);
    }
    };

    $scope.addPost = function() {
        $scope.post.selection = $scope.selection;
        $http.post('new_post', $scope.post).success(function() {        
        });
    }

......和我的Laravel控制器:

class PostController extends BaseController {
    public function add() {
        if($post = Post::insertGetId(array('title' => Input::json('title'), 
                                           'body' => Input::json('body')))) {
            $tags = [];
            foreach(Input::json('selection') as $tag) {
                array_push($tags, $tag['id']);
            }
            $new_post = Post::find($post);
            $new_post->tags()->sync($tags);
        }
    }
}

有了这个,我实际上做了5个查询来实现最终结果。但是,我遵循了Laravel关于此的文档。我应该使用普通查询吗?

谢谢!

0 个答案:

没有答案