[英]laravel eloquent relation one to one
我有一個像這樣的 Laravel 遷移
usergroups:
Schema::create('usergroups', function (Blueprint $table) {
$table->integer('id')->primary();
$table->string('name');
$table->string('slug');
});
users:
Schema::create('users', function (Blueprint $table) {
$table->integer('nik')->primary();
$table->string('name');
$table->string('username');
$table->string('password');
$table->string('telp', 15);
$table->integer('usergroup_id');
$table->rememberToken();
$table->timestamps();
});
Schema::table('users', function ($table) {
$table->foreign('usergroup_id')->references('id')->on('usergroups')->onDelete('cascade');
});
User
model
public function group()
{
return $this->belongsTo(Usergroup::class, 'id');
}
用戶組Usergroup
public function user()
{
return $this->hasMany(User::class, 'usergroup_id');
}
我用這個得到空白數據
$petugas = User::find(1);
return $petugas->group;
任何人幫助我,請...
這不是一對一的關系,即(用戶有一部手機,一部手機屬於一個用戶)
在這種情況下,一個組有很多用戶,一對多關系
您正在遷移用戶表兩次,將外鍵移動到遷移中
Schema::create('users', function (Blueprint $table) {
$table->integer('nik')->primary();
$table->string('name');
$table->string('username');
$table->string('password');
$table->string('telp',15);
$table->integer('usergroup_id');
$table->foreign('usergroup_id')->references('id')->on('usergroups')->onDelete('cascade');
$table->rememberToken();
$table->timestamps();
});
希望這可以幫助
首先,這不是一對一的關系。 這是一對多的關系。 根據遷移文件,您以錯誤的方式建立關系。
關系代碼塊應如下所示。
public function group()
{
return $this->hasMany(Usergroup::class);
}
public function users()
{
return $this->belongsTo(User::class);
}
更多信息:
在您的情況下,可能有兩個可能的事實。
事實 1:在這種情況下,外鍵列應該放在組表中。 為了遵循約定,在groups
表中創建外列名稱user_id
。 代碼應該是這樣的
public function groups()
{
return $this->belongsTo(Usergroup::class);
}
public function user()
{
return $this->hasMany(User::class);
}
事實 2:在這種情況下,外鍵列應該放在 users 表中。 為了遵循約定,在users
表中創建外部列名稱group_id
並且關系代碼應該如下所示
public function group()
{
return $this->hasMany(Usergroup::class);
}
public function users()
{
return $this->belongsTo(User::class);
}
我明白了...這是用戶 model
public function group()
{
return $this->belongsTo(Usergroup::class,'usergroup_id');
}
這在用戶組 model
public function user()
{
return $this->hasMany(User::class,'usergroup_id');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.