我试图删除相应的行。
Pasien表dam Users表
当我删除pasien表中的一行时,也应该删除连接到users表的行。但是,无论我是否在模型上错误地实现了belongsTo和hasMany,这都会使我感到困惑。
我试图将其反转(属于tos和hasMany),但这仍然是一个错误。解决此问题的正确代码是什么?
用户表
Pasien表
Pasien模型
public function users()
{
return $this->hasMany('App\Users');
}
public static function boot()
{
parent::boot();
static::deleting(function($pasien) {
$pasien->users()->delete();
});
}
用户模型
public function pasien()
{
return $this->belongsTo('App\Pasien');
}
Pasien控制器
public function destroy(Pasien $pasien)
{
$pasien->delete();
return redirect()->route('pasien.index')
->with('success','Pasien deleted successfully');
}
答案 0 :(得分:0)
问题是iduser
表中的外键Pasiens
不遵循laravel遵循的约定(它期望列名在指向{{1时为user_id
}}表)
按照惯例,Eloquent将采用拥有模型的“ snake case”名称,并在其后缀_id。
要解决此问题,您必须为Users
和belongsTo
提供自定义外键名称,以便laravel可以正确确定两个表之间的关系。
在用户模型中
hasMany
在 Pasien 模型中
public function pasien()
{
return $this->belongsTo('App\Pasien', 'iduser');
}