Laravel 不删除记录
Posted
技术标签:
【中文标题】Laravel 不删除记录【英文标题】:Laravel Not Delete record 【发布时间】:2018-11-08 01:22:10 【问题描述】:我正在使用 laravel 来构建我的 php 项目。我可以成功从数据库中检索数据,但按下删除按钮时无法删除记录,我尝试使用 ajax 删除记录,所以这是我的 ajax 代码
$('.userdelete').on('click', function ()
alert('dfsfs');
var id = $(this).data('id');
$.ajax(
type: 'DELETE',
url: '/users/' + id,
data:
'_token': $('input[name=_token]').val(),
,
success: function (data)
alert(data);
toastr.success('Successfully deleted Post!', 'Success Alert', timeOut: 5000);
$('.item' + data['id']).remove();
,
error: function (data)
console.log(data);
);
);
这是路线
Route::resource('users','radcheckController');
用户模型
namespace App;
use Illuminate\Database\Eloquent\Model;
class Users extends Model
protected $table="radcheck";
这是控制器的销毁函数
public function destroy($id)
$res = Users::where('username', $id)->delete();
【问题讨论】:
你使用的是什么版本的 Laravel? 你需要修复,将_method: 'delete'
添加到ajax中的数据
你能告诉我们错误吗?你在 ajax 中传递 CSRF Token 吗?
如果你使用 $id 作为主键,使用 User::find($id)->delete()
这是错误 DELETE localhost:8000/users/10966417880 500 (Internal Server Error)
【参考方案1】:
您需要指定正确的列,但您没有选择一个。使用find
或findOrFail
和$id
或使用first()
。
正确的做法是:
public function destroy($id)
$res = Users::find($id);
$res->delete();
或尝试:
public function destroy($id)
$res = Users::where('username', $id)->first()->delete();
【讨论】:
这是错误信息 DELETE localhost:8000/users/10966417880 500 (Internal Server Error) 我们的控制器是对的。没有问题。我们只是无法连接到路线。不要使用资源。使用 Route::delete 创建自己的路线。 我删除了destroy的代码并插入其中 echo $id 和代码返回正确的值。所以我们可以访问路线【参考方案2】:您是否将 id 或用户名传递到端点? 因为在你的控制器上你正在寻找一个用户名,参数被命名为 id,对吗?
【讨论】:
我通过了用户名 DELETE localhost:8000/users/10966417880 500(内部服务器错误)以上是关于Laravel 不删除记录的主要内容,如果未能解决你的问题,请参考以下文章