我有2个表,它是一对一的关系模型类型。
Students Table = id|nik|name|address。帐户表= id|nik|username|password.
在这种情况下,每个学生都有一个帐户,我将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');
}
在学生表中,您应该定义一个名为'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');
}
不应该在两个表中重复一个字段(nik),这违反了数据库规范化。您应该在Account表上创建student_id。这样你就可以遵循Laravel的一对一关系标准了。
// Student Model
public function account()
{
return $this->hasOne(Account::class);
}
// Account Model
public function student()
{
return $this->belongsTo(Student::class);
}