如何通过删除模型来更新模型并再次在laravel中创建模型?

时间:2014-01-29 13:55:29

标签: php laravel

我是laravel的新手。我需要知道是否有任何简单的方法来更新模型,删除现有模型并再次创建它。

例如,我有一个登录表,包含id,username,password,userid和id。当我尝试更新用户名或密码模型时,我需要删除(软删除)整行,并使用更新的值创建一个新行。这意味着之前输入的数据不会更改。他们在像ladevel一样简单的方式就像softdelete一样?

3 个答案:

答案 0 :(得分:1)

通常您只需使用以下命令回滚迁移:

php artisan migrate:rollback

然后使用您要添加的列更新迁移,然后使用

再次迁移它
php artisan migrate

如果您需要在创建表格时向其添加数据,您可以查看播种:

http://laravel.com/docs/migrations#database-seeding

另请查看此链接:

http://www.laravelsd.com/share/2nM4tV

它是一个laravel架构设计器,您可以自定义表并将它们导出为迁移并使用GUI工具将其播种。这太棒了!

编辑:但要回答您的主要问题,您可以随时通过phpmyadmin导出表格中的当前数据,并在再次迁移后将其导入。虽然这只会在您向表中添加列并且未修改列名/删除任何列时才有效。

编辑2:这是你的想法吗?创建一个新条目,但使用旧条目中的字段?

public function update($id){
    $updated_user = new User; // Create new user
    $user = User::find($id); // Find previous user entry

    $updated_user->id = $user->id; // Grab old ID (if you want the same ID as last entry)
    $updated_user->username = Input::get('username'); // Update username/password
    $updated_user->password = Input::get('password');
    $updated_user->userid= $user->userid; // Grab other attributes from old user entry

    $user->delete(); // Delete old entry
    $updated_user->save(); // Save new one
}

答案 1 :(得分:1)

将此添加到您的Eloquent模型以启用软删除。

   protected $softDelete = true;

您可以在Laravel中看到它们如何工作的示例:Soft delete

答案 2 :(得分:0)

据我所知,Laravel中没有软删除。主要原因肯定是因为软删除没有严格的定义 - 由开发人员决定如何实现和执行软删除

您可以执行的操作是在表格中添加一列,以标记该行是否已被“删除”。当您将列的状态设置为现有模型的“已删除”(或者您希望实现软删除),然后使用更新的值创建新模型时,更新会变得轻松

// set status of existing model to 'soft delete'
$existing_model->delete_status = 1;

$existing_model->save();

// create a new model with updated values
Your_Eloquent_Class_Model::create($array_of_updated_values);