定义自定义主键和外键的关联关系



我有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);
}

相关内容

  • 没有找到相关文章

最新更新