簡體   English   中英

laravel eloquent 一對一關系

[英]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. 一個用戶有很多組,但一個組只屬於一個用戶。
  2. 一個組有很多用戶,但一個用戶只屬於一個組。

事實 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM