【问题标题】:No query results for model [App\UserModel] 0 [ Laravel ]模型 [App\UserModel] 0 [ Laravel ] 没有查询结果
【发布时间】:2019-12-04 09:33:13
【问题描述】:

当我尝试在我的表中删除用户时出现错误。

我的路线(api.php)

Route::delete('/users/{id}', 'UsersController@destroy');

我的控制器

公共函数销毁($id) { $user = UserModel::findOrFail($id); $用户->删除(); 返回新用户集合($user); }

我的 Vue.js

删除(ID){ 让 $this = this; axios.delete(`/api/users/${id}`).then(function(response) { $this.fetchUser(); }) },

任何帮助将不胜感激... 提前致谢。

【问题讨论】:

  • 你能详细说明你的错误是什么
  • 尝试将您的 findOrFail 放在 try catch 块中
  • @IssamRafihi findOrFail 的要点是在找不到实体时返回 404,它工作正常。

标签: php laravel vue.js


【解决方案1】:

您收到 404 错误,因为您尝试加载 ID 为 0 的模型,但该模型不存在(密钥从 1 开始)。

我建议检查您的 javascript 代码以确保传递了要删除的正确用户 ID,并且不会意外地将空值转换为 0

【讨论】:

  • 是的,你说得对,表中没有 id 0 但如何更正?
  • 那么,是什么触发了您的 javascript 函数?显然,传递给它的任何东西都是不正确的。
【解决方案2】:
$user = UserModel::findOrFail($id); //retrieving use, dont use findorfail here because it will thrown 404 error page
$user->delete(); // you delete the user
return new UsersCollection($user); // it means $user now is an empty collection therefore you get an error

我相信在你删除用户后,你应该只返回确定成功与否的代码

return response()->json([
'code' => 200,
'message' => "you've successfully delete"
);

或者如果您想传递已删除用户的数据详细信息,您可以这样做

public function destroy($id)
{
    $user = UserModel::find($id);
    if(!is_null($user)){
        return response()->json([
             'code' => 404,
             'message' => 'Not found',
        ]);
    };
    $old_user = $user;
    $user->delete();
    return new UsersCollection($old_user);
}

【讨论】:

    【解决方案3】:

    现在我通过改变我的表来解决它

    <pre>
             <tr v-for="(user, key) in users">
                  <td>{{user.id}}</td>
                  <td>{{user.name}}</td>
                  <td>{{user.email}}</td>
                  <td>{{user.phone_number}}</td>
                  <td @click.prevent="update(key)">
                     <span class="btn btn-primary"><i class="mdi mdi-mode-edit" ></i></span>
                  </td>
                  <td @click.prevent="remove(key)">
                       <span class="btn btn-danger"><i class="mdi mdi-delete"></i></span>
                   </td>
             </tr>
    </pre>
    

    <tr v-for="(user, key) in users"> <td>{{user.id}}</td> <td>{{user.name}}</td> <td>{{user.email}}</td> <td>{{user.phone_number}}</td> <td @click.prevent="update(key)"> <span class="btn btn-primary"><i class="mdi mdi-mode-edit" ></i></span> </td> <td @click.prevent="remove(user.id)"> <span class="btn btn-danger"><i class="mdi mdi-delete"></i></span> </td> </tr>

    【讨论】:

      【解决方案4】:
      Probably you have been getting this error because you are trying to delete model that doesn't exists. You can try something like
      
      $user = UserModel::find($id);
      
      if ($user) {
          $user->delete();
          return new UsersCollection($user); 
      }else{
         // Code if $user not found
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-16
        相关资源
        最近更新 更多