将单行放入变量,并通过一个查询同时将其删除

时间:2019-03-26 11:32:07

标签: laravel eloquent model lumen

我在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()方法)将其返回数组)

有什么办法吗?

3 个答案:

答案 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