如何在laravel迁移中终止数据丢失

时间:2017-08-06 08:58:24

标签: php mysql laravel eloquent laravel-eloquent

我从来不知道为什么!但当我在phpMyAdmin中查看我的数据库时,我的一个名为Posts的表被删除了!所以我试图通过php artisan migrate重新生成它,但我有这个错误:

  

[PDOException]
  SQLSTATE [42S01]:基表或视图已存在:1050表'用户'   已存在

我的用户表只存在帖子表被删除了! 这是我的模特:

class Post extends Model
{
protected $table = 'posts';
public $primaryKey = 'id';
public $timestamps = true;

public function user()
{
    return $this->belongsTo('App\User');

}
}

class User extends Authenticatable
{
use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];

public  function posts()
{

    return $this->hasMany('App\Post');
}

}

我必须在用户迁移中使用此命令:Schema::dropIfExists('users');并再次运行php artisan migrate。除了用户表中的所有数据之外,所有事情都被解决了!

如何在laravel中终止同样的问题?如何在laravel迁移中disable data losing,如果某些更改导致丢失数据,请提醒我。

在微软EF中我们有EnableDataLoosing=false; Eloquent在laravel中有同样的事吗?

1 个答案:

答案 0 :(得分:0)

在Laravel 5.5中有一个新命令php artisan migrate:fresh,它将删除所有表格并重建所有表格