Laravel尝试删除最后添加的

时间:2016-03-17 20:05:35

标签: php mysql laravel

我正在尝试删除在具有特定用户ID的MySQL表中添加的最后一行。当我点击我的按钮时,我当前收到以下错误。

致命错误:调用成员函数Where()on integer

这是我在刀片文件中的代码,其中按钮是

<div class="element1">
  {{ HTML::image('progress2/Icons/Meetings_Icon.png', 'alt', array('width' =>150)) }}
   <div class="text1">
 <form action="{{ route("progress") }}" method="post">
    <button class="styleHover styleButton"> + </button> </form>
    &nbsp; &nbsp; 5 &nbsp; &nbsp;
<form action="{{route("progressDeincrement") }}" method="post">
 <button class="styleHover styleButton"> - </button>
  </form>
 </div>

以下是我的路线文件中的代码

Route:: post("progressDeincrement", [
  "as" => "progressDeincrement",
  "uses" => "tableController@delete"
]);

这是我控制器中的代码

public function delete() 
{
   $idForDelete = DB :: table("users_has_activities") -> max("pointsID") -> 
  Where("usersID", "=", "12");
  DB:: table("users_has_activities") -> Where("pointsID", "=",  $idForDelete) ->  
delete();
}

+按钮能够在MySQL表中添加一行,但是删除一行对我来说是一个挑战。

4 个答案:

答案 0 :(得分:3)

您可以将其减少为单个数据库查询:

DB::table("users_has_activities")
    ->where("usersID", "=", "12")
    ->orderBy("pointsID", "DESC")
    ->take(1)
    ->delete();

这将为您提供如下的SQL查询:

DELETE FROM users_has_activities
WHERE usersID = '12'
ORDER BY `pointsID` DESC
LIMIT 1;

使用Order By column DESCLIMIT 1的组合可确保您获得可用的最高ID,从而模仿MAX()的行为。

答案 1 :(得分:0)

我猜max("pointsID")会返回一个整数,并且您尝试在整数上使用Where子句而不是在模型或集合上使用。

也许你想用这个:

$idForDelete = DB::table('users_has_activities')->where('usersID', '12')->max('pointsID');

答案 2 :(得分:0)

试试这个,并将first()ordering descending

一起使用
$idForDelete = DB :: table("users_has_activities") ->where("usersID", "=", 12)->orderBy('pointsID', 'DESC')->first();

答案 3 :(得分:0)

文档说明必须在最近的地方调用max()函数,因为它运行查询。

查看聚合中的示例。

用例是...表 - &gt;过滤结果 - &gt;获取我想要的东西,例如获取一个,获取全部,删除,更新等。

https://laravel.com/docs/5.1/queries#aggregates