【问题标题】:How to perform a delete operation on a Model?如何对模型执行删除操作?
【发布时间】:2015-05-23 06:03:07
【问题描述】:

来自 Ruby on Rails 体验,您可以加载 rails 控制台以删除用户或所有用户。我是 Laravel 5 的新手,我正在寻找类似的东西来删除 sqlite3 数据库中已经存在的用户。

我看到人们在谈论 User::find(1)->delete(); 删除用户,但你把它放在哪里并运行?是否有执行删除任务的控制台?我想知道如何在不删除表的情况下删除用户。我不想软删除。

【问题讨论】:

  • 如果你想在控制台上做,你应该写一个command

标签: php laravel sqlite eloquent laravel-5


【解决方案1】:

例如,您可以将此代码放在控制器中。

你可以使用

$user = User::find($id);    
$user->delete();

如果你不使用SoftDeletingTrait trait 或者

$user = User::find($id);    
$user->forceDelete();

如果你这样做了,并且你想真正从数据库中删除用户,而不仅仅是从结果中隐藏它。

您可以在Laravel page阅读更多内容

【讨论】:

  • 控制器放在哪里,然后下一步做什么?
  • 如果您只想删除记录,就是这样。如果你想写你的项目,你真的应该看看 Laravel 文档
【解决方案2】:

在 Laravel 5 中你可以使用 destroy 方法。

$user->destroy($id);

当然,您有一个命令行来执行此操作。

$ php artisan tinker

你可以运行例如

>> $var = new App\User;
>> $user= $user->find($id);
>> $user->destroy();

【讨论】:

    【解决方案3】:

    有几种方法可以做到这一点。

    如果您的控制器将用户定义为参数:

    public function destroy(User $user) 
    {
        return $user->delete();
    }
    

    您也可以通过 $id 删除任何用户:

    User::destroy ($id);
    

    假设您以某种安全性包装这些路由。

    编辑:更正拼写

    【讨论】:

      【解决方案4】:

      您可以使用下面的示例删除多个数据 参数......

      > 
      > tableName::where('field_1','=',$para1)
      >               ->where('field_2,'=',$para2)
      >               ->delete();
      

      【讨论】:

        【解决方案5】:

        这仍然适用于 laravel 7,我使用 tinker 命令行和 delete() 方法:

        php artisan tinker
        

        现在我可以直接运行命令了:

        > App\User::find($id)->delete();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-14
          • 1970-01-01
          • 2019-04-23
          • 2016-01-16
          • 1970-01-01
          相关资源
          最近更新 更多