我正在尝试使用 ANGULARJS 在 Laravel 框架中运行 MySql 查询 但无法通过按钮删除数据库记录。 此代码将数据插入数据库、将数据获取到 JSON 文件并从 JSON 文件按行显示数据。现在我尝试使用相应的删除按钮从数据库中删除数据,广告希望通过更新按钮更新现有数据。
这是我的查看页面
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<h2>Registration</h2><br/>
<table border=1>
<tr><td>Name:</td><td><input type="text" ng-model="nam" name="nam"><br/></td></tr>
<tr><td>Email:</td><td><input type="email" ng-model="email" name="email"><br/></td></tr>
<tr><td>Password:</td><td><input type="password" ng-model="password" name="password"><br/></td></tr>
<tr><td>City:</td><td><input type="text" ng-model="city" name="city"><br/></td></tr>
<tr><td><button ng-click="addFunc()" type="submit">Submit</button></td></tr>
</table>
</div>
</form>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope,$http) {
$scope.addFunc = function() {
$http({
method : 'POST',
url : 'http://localhost/crud/public/registration_data_page',
data : {nam:$scope.nam,email:$scope.email,password:$scope.password,city:$scope.city}
}).then(function successCallback(response) {
console.log('successCallback');
console.log(response);
}, function errorCallback(response) {
console.log('errorCallback');
console.log(response);
});
}
$http({method:'GET', url:'http://localhost/crud/public/registration_json_page'}).success(function(response){
$scope.query = response;
});
});
</script>
<table style="width:100%" border=1>
<tr>
<th>Id</th>
<th>Name</th>
<th>Email</th>
<th>Password</th>
<th>City</th>
<th>Delete</th>
</tr>
<tr ng-repeat="x in query">
<td>{{x.id}}</td>
<td>{{x.name}}</td>
<td>{{x.email}}</td>
<td>{{x.password}}</td>
<td>{{x.city}}</td><br/>
<td><input type="submit" name="delet" value="Delete"></td>
</tr>
</body>
</html>
这是我的 Controller 。
<?php
namespace App\Http\Controllers;
use App\Http\Requests;
use Illuminate\Http\Request;
use DB;
use Session;
use Redirect;
class NewController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
public function registration_data_function(Request $request)
{
echo $nam_value = $request->nam;
echo $email_value = $request->email;
echo $password_value = $request->password;
echo $city_value = $request->city;
$reg = DB::table('angular_registration')->insert(['name' => $nam_value, 'email' => $email_value, 'password'=>$password_value, 'city'=>$city_value]);
}
public function registration_json_function(Request $request)
{
$query = DB::select('select * from angular_registration');
return response($query);
}
public function registration_function(Request $request)
{
$query = DB::select('select * from angular_registration');
return view('registration');
}
}
这是我的路线页面
Route::get('/registration', 'NewController@registration_function');
Route::post('/registration_data_page', 'NewController@registration_data_function');
Route::get('/registration_json_page', 'NewController@registration_json_function');
最佳答案
就像使用 addFunction 一样,在 Angular JS 中创建一个removeFunction(id) 函数, 创建对应的 Controller 方法和路由
<?php
//in your route
Route::get('/delete/{id}', 'NewController@delete')
->where('id'=>'[0-9]+');
//in your controller
public function delete($id)
{
//please use your models to delete no raw db queries for security
//prevent sql injection
Model::find($id)->delete()
return Response::json(['status'=>'deleted'])
}
Angular
$scope.removeFunction=function(id){
//call your delete route with the parameters
ajax.get('/delete/'+id)
}
在您的模板中使用
<td><input type="button" ng-click={{removeFunction(x.id) }} name="delet" value="Delete"></td>
抱歉,php中的delete方法不起作用,因为delete已经是一项关键工作,所以请更改为deleteAngular或任何其他名称沿途更新路线
关于php - 如何使用 Laravel 4 框架在 ANGULARJS 中执行所有 MySql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39053160/