我是laravel的新手。我需要知道是否有任何简单的方法来更新模型,删除现有模型并再次创建它。
例如,我有一个登录表,包含id,username,password,userid和id。当我尝试更新用户名或密码模型时,我需要删除(软删除)整行,并使用更新的值创建一个新行。这意味着之前输入的数据不会更改。他们在像ladevel一样简单的方式就像softdelete一样?
答案 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)
答案 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);