我试图从Laravel 5.3中的表中删除特定记录

时间:2016-12-08 11:48:50

标签: laravel laravel-5.3

我的观看页面代码是

  @foreach($clients as $client)
<tr>
<td>{{ $client->client_id }}</td>

<td>{{ $client->ip_address }}</td>

<td>{{ $client->netmask }}</td>
<td>
    <a href= "del/{{$client->id}}"><button type = "button" class = "btn btn-danger ">
     Delete
  </button> 
</td>

</tr>

    @endforeach

我的destroy方法的控制器代码是:

public function destroy($id)

{

    $clients = Subnet_behind_client::findOrFail( $id );
    $clients->delete();
    return view('view2',compact('clients'));

}

我的路线档案是:

Route::get('del/{id}', 'Subnet_Behind_ClientController@destroy');

我可以在视图页面的表格中查看记录,但是我无法从该表格中删除记录。

4 个答案:

答案 0 :(得分:1)

您的代码对我来说很好。

顺便说一句,如果您使用主键删除记录,则可以使用 destroy()

https://laravel.com/docs/5.3/eloquent#deleting-models

Subnet_behind_client::destroy( $id );

这样您就不需要获取要删除的记录。它会稍微优化性能。

答案 1 :(得分:0)

您尝试将delete()方法调用到从findOrFail()方法返回的记录集合中。

通过执行此操作,您无法访问查询构建器,因为现在您拥有Collection而不是QueryBuilder

为了使其有效,你可以这样做:

$clients = Subnet_behind_client::findOrFail( $id )->delete();
return view('view2',compact('clients'));

希望这有帮助!

答案 2 :(得分:0)

你能用这种方式:

首先打印数据(如果存在)或检查现有条目。

$clients = Subnet_behind_client::where('id', $id)->get();
// dd($clients);
if(count($clients)>0){
    Subnet_behind_client::where('id', $id)->delete();
}

我认为这个技巧会对你有帮助。

如果您忘记提及定义控制器的顶部,请确保:

use App\Subnet_behind_client;

答案 3 :(得分:0)

这应该有效:

Subnet_behind_client::destroy( $id );

要删除,我建议使用DELETE请求代替GET