我正在尝试删除在具有特定用户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>
5
<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表中添加一行,但是删除一行对我来说是一个挑战。
答案 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 DESC
和LIMIT 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;获取我想要的东西,例如获取一个,获取全部,删除,更新等。