我有2个表,它是一对一关系模型类型。
学生表= id|nik|name|address。帐户表=id|nik|用户名|密码。
在这种情况下,每个学生都有一个帐户,我将NIK作为学生模型中的$primaryKey。如何定义这种关系呢?提前谢谢。
// Student Model
public function account()
{
return $this->hasOne(Account::class, 'nik', 'nik');
}
// Account Model
public function student()
{
return $this->belongsTo(Student::class, 'nik', 'nik');
}发布于 2021-10-27 13:16:54
在您的学生表中,您应该定义一个名为'account_id‘的新列来表示学生帐户,并且该列应该为空。
$table->unsignedBigInteger('account_id')->nullable();
$table->foreign('account_id')->references('nik')->on('accounts');然后,你可以在你的关系中使用它:
// Student Model
public function account()
{
return $this->hasOne(Account::class, 'account_id', 'nik');
}
// Account Model
public function student()
{
return $this->belongsTo(Student::class, 'account_id', 'nik');
}发布于 2021-10-27 13:20:51
您不应该在两个表中重复一个字段(nik),这与数据库规范化背道而驰。您应该在帐户表上创建student_id。这样你就可以在一对一的关系上遵循Laravel的标准。
// Student Model
public function account()
{
return $this->hasOne(Account::class);
}
// Account Model
public function student()
{
return $this->belongsTo(Student::class);
}https://stackoverflow.com/questions/69739280
复制相似问题