我成功地创建了一个简单的"添加主题"用于测试laravel的枢轴操作的形式。它由标题,正文和标记复选框组成。我的模型是Post
,Tag
和支点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关于此的文档。我应该使用普通查询吗?
谢谢!