Javascript Angular、Laravel 4和MySQL数据库最佳实践

Javascript Angular、Laravel 4和MySQL数据库最佳实践,javascript,php,mysql,angularjs,laravel-4,Javascript,Php,Mysql,Angularjs,Laravel 4,我对Angular很陌生,对Laravel 4有点经验。 我正在构建一个应用程序,用户可以在其中“动态”编辑,但也可以保存到MySQL 最初的计划是使用Angular管理实时编辑,并使用Eloquent将数据存储和检索到MySQL数据库。我知道你可以通过Angular连接到DB,但我想知道最好的解决方案是什么 最好是将其分开,还是将其用于所有操作 如果在任何情况下都使用Angular,是否存在性能问题 对于DB交互来说,Angular是否同样易于使用和雄辩 如果我使用Eloquent for

我对Angular很陌生,对Laravel 4有点经验。 我正在构建一个应用程序,用户可以在其中“动态”编辑,但也可以保存到MySQL

最初的计划是使用Angular管理实时编辑,并使用Eloquent将数据存储和检索到MySQL数据库。我知道你可以通过Angular连接到DB,但我想知道最好的解决方案是什么

  • 最好是将其分开,还是将其用于所有操作
  • 如果在任何情况下都使用Angular,是否存在性能问题
  • 对于DB交互来说,Angular是否同样易于使用和雄辩
  • 如果我使用Eloquent for DB,是否直接将数据传递给Angular
我已经开始用Angular构建应用程序的实时编辑部分,我不得不说我发现它非常容易学习,而且非常强大。我现在必须决定如何处理存储


谢谢你

看看伟大的Dave Mosher编写的本教程,我想这可能正是你想要的,他使用了Laravel、Angular和MySQL:

Youtube视频:


源代码:

使用angular.js和laravel的最佳方法是使用RESTAPI

例如,如果您有一个管理面板来管理用户,那么该方法将是

在你的路线上

Route::resource('users', 'UsersController');
控制器看起来像这样

<?php

/**
*
* Users  Controller
* 
*/

class UsersController extends AdminController {

    /**
     * Display all users.
     *
     * @return Response
     */

    public function index() {

        $users = User::where('id', '!=', Auth::user()->id)->get();

        return Response::json(array(
            'status' => 'success',
            'users' => $users->toArray()),
            200
        );

    }


    /**
     * Show the form for creating a new resource.
     *
     * @return Response
     */

    public function create() {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     */

    public function store() {
        // add some validation also
        $input = Input::all();

        $user = new User;

        if ( $input['name'] ) {
            $user->name = $input['name'];
        }
        if ( $input['username'] ) {
            $user->username = $input['username'];
            $user->password = Hash::make($input['username']);
        }
        if ( $input['email'] ) {
            $user->email = $input['email'];
        }


        $user->save();

        return Response::json(array(
            'status' => 'success',
            'users' => $user->toArray()),
            200
        );
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return Response
     */

    public function show($id) {
        $user = User::where('id', $id)
                    ->take(1)
                    ->get();

        return Response::json(array(
            'error' => false,
            'users' => $user->toArray()),
            200
        );
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return Response
     */

    public function edit($id) {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  int  $id
     * @return Response
     */

    public function update($id) {
        // add some validation also
        $input = Input::all();

        $user = User::find($id);

        if ( $input['name'] ) {
            $user->name = $input['name'];
        }
        if ( $input['username'] ) {
            $user->username = $input['username'];
        }
        if ( $input['email'] ) {
            $user->email = $input['email'];
        }


        $user->save();

        return Response::json(array(
            'status' => 'success',
            'message' => 'User Updated'),
            200
        );
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return Response
     */

    public function destroy($id) {
        $user = User::find($id);

        $user->delete();

        return Response::json(array(
            'status' => 'success',
            'message' => 'User Deleted'),
            200
        );
    }

}
获取-获取单个用户以进行编辑

$http({method: 'GET', url: Data.root_path + 'users/'+id}).
success(function(data, status, headers, config) {
    $scope.entry = data.users[0];
}).
error(function(data, status, headers, config) {
    $scope.entry = [];
});
放置-更新单个用户

$http.put(Data.root_path + 'users/'+entry.id, entry).
success(function(data, status, headers, config) {
    //
}).
error(function(data, status, headers, config) {
    //
});
后期保存新用户

$http.post(Data.root_path + 'users', entry).
success(function(data, status, headers, config) {
    //
}).
error(function(data, status, headers, config) {
    //
});
删除-删除用户

$http.delete(Data.root_path +'users/'+id)
.success(function(response) { 
    //
})
.error(function(response) {
    //
});

创建RESTful端点以使用Laravel管理资源。如前所述,使用资源控制器非常简单:

Route::resource('user','userscoontroller')

然后使用AngularJS资源与之交互。获取用户、编辑模型然后保存(通过回调中的$调用)的示例(来自文档)

更好的是,为资源创建一个Angular JS服务,这样您就可以将其注入多个控制器并定义所有方法

下面是一篇关于如何设置的好帖子:


谢谢,现在我们来看一看。有人能提到用一个来代替另一个的+和-吗?似乎我可以使用Laravel和jQuery做任何我想做的事情。我想知道在业务逻辑和DB交互中使用Angular是否有优势?在本例中,您认为在业务逻辑中使用Angular优于Laravel有什么优势吗?你认为它能平衡服务器和客户端之间的负载吗?我对Laravel4+AngularJS有很好的感觉,它用于定制灵活的框架。
$http.post(Data.root_path + 'users', entry).
success(function(data, status, headers, config) {
    //
}).
error(function(data, status, headers, config) {
    //
});
$http.delete(Data.root_path +'users/'+id)
.success(function(response) { 
    //
})
.error(function(response) {
    //
});
var User = $resource('/user/:userId', {userId:'@id'});
var user = User.get({userId:123}, function() {
  user.abc = true;
  user.$save();
});