【发布时间】:2015-12-25 17:06:27
【问题描述】:
我的user 模型中有以下引导方法设置:
/**
* Boot the model.
*
*/
public static function boot()
{
parent::boot();
static::deleting(function($user)
{
$user->roles()->detach();
$user->supervisors()->detach();
$user->types()->detach();
$user->rates()->detach();
$user->miscs()->detach();
$user->timesheets()->delete();
});
}
一个用户可以有许多时间表,因此我在用户模型中为时间表设置了hasMany 关系。
/**
* The timesheets that belong to the user.
*
* @return Object
*/
public function timesheets()
{
return $this->hasMany('App\Models\Timesheet\Timesheet');
}
一个时间表也可以有很多数据,所以我在时间表模型中添加了一个关系:
/**
* The data that belong to the timesheet.
*
* @return Object
*/
public function data()
{
return $this->hasMany('App\Models\Timesheet\DataTimesheet');
}
我的问题是,当我删除用户时,它应该删除时间表以及与之关联的所有数据。目前,当我删除用户时,它会删除用户和时间表,但不会删除数据(DataTimesheet)。
当我单独删除时间表时,数据会被删除。
谁能建议我在删除用户时如何删除数据?
【问题讨论】:
-
您使用的是什么 DBMS?因为所有这些通常都可以通过 DBMS 轻松地自动管理,只需在数据库关系中设置正确的外键
-
DBMS 到底是什么意思?我正在使用 MySQL 和 laravel 迁移
-
然后在为您的数据库创建迁移时,将所有表(角色、主管、时间表等)中的所有 user_id 列设置为指向 user.id 列的foreign key
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
标签: php laravel laravel-4 laravel-5