我想通过执行具有where id = $id
的SQL查询来填充表。
代码ajax:
$('#ingredientTable').DataTable({
"ajax": {
"url": "api/ingredients",
"type": "post",
"data" : {
'_token': token,
"id" : '1' ,
}
},
"columns":[
{data:'name', name: 'ingredients.name'},
],
});
在路线中:
route::post('api/ingredients', function() {
return Datatables::of(
DB::select('SELECT * FROM ingredients
INNER JOIN ingredient_product ON ingredient_product.ingredient_id = ingredients.id
WHERE ingredients.id=' . $id . ' ;'))
->make(TRUE);
});
我收到此错误:
POST http://localhost:8080/pizzeria/public/api/ingredients 500(内部服务器错误)和DataTables警告:table id = ingredientTable - Ajax错误。有关此错误的详细信息,请参阅http://datatables.net/tn/7
答案 0 :(得分:0)
r
中的Route
应该大写
Route::post
您的select()
语句不正确,因为您需要使用DB::raw()
来允许自己编写原始SQL。但是,正如@aynber所指出的那样,你也会暴露自己的SQL注入。相反,它应该这样做:
DB::table('ingredients')
->join('ingredient_product', 'ingredients.id', 'ingredient_product.ingredients_id')
->where('ingredients.id', request()->has('id') ? request()->get('id' : null)
->select('*')
->get();
这将保护您免受SQL注入并正确使用Laravel的Query Builder