我在mysql数据库中有一个password_resets
表,我想获取单个原始数据,并使用DB
门面在Lumen中通过一个查询将其删除,如下所示:
$reset_row = DB::table('password_resets')->where('token', $request->token)->first()->delete();
但是我有一个错误:
Call to undefined method stdClass::delete()
我尝试以下代码:
$reset_row = DB::table('password_resets')->where('token', $request->token)
//do my work whith $reset_row->first();
$reset_row->delete();
但是我认为这种方式使用2个查询来完成这项工作。
注意:我知道我无法删除,原因是first()
方法)将其返回数组)
有什么办法吗?
答案 0 :(得分:0)
实际上不需要使用-> first()。因为您的令牌是唯一的。
如果您需要尝试此操作。
$reset_row = DB::table('password_resets')->where('token', $request->token)
->Limit(1)->delete();
我认为可以将“ limit”与“ delete”一起使用。
答案 1 :(得分:0)
您可以简单地将delete方法链接到查询Buider。 不需要选择第一个,因为您要删除它们,而不是选择它们。
DB::table('password_resets')->where('token', $request->token)->delete();
它已经在StackOverflow的另一篇文章中得到解答了。
您也可以使用此答案 laravel-delete-query-builder,您还可以查看有关deleting using the query builder的官方文档
答案 2 :(得分:0)
最后,我想为重置密码创建模型并像这样使用它:
1。。通过将其设置为this之类的模型来设置令牌的主键
2。。使用查找方法查找令牌(document for find method)
使用这种方式:
$reset=PasswordReset::find($token);
//work with $reset
$reset->delete()
注意::有关将主键设置为字符串col的信息,也请参见此link