我希望user
能够只有一个distrito
(葡萄牙语中的district
)。 distrito
可以有多个user
。这是一个相当简单的关系但问题出现在你有第三个名为distritos
的表时,唯一的工作就是将数字翻译成字符串(我不知道这样的名字)表)。
Distrito table
$table->increments('id');
$table->string('distrito');
e.g。
ID DISTRITO
1 - Aveiro
2 - Beja
3 - ...
用户表
$table->string('name');
$table->string('last_name');
$table->string('profile_picture')->default('default.jpg');
$table->string('userProfile')->default('');
$table->float('stars')->default(0);
distrito_user表 this table will reference where the user live
$table->integer('user_id'); //id of the user
$table->integer('distrito_id'); //Id of the district where the user lives
用户模型
public function distritoUtilizador(){
return $this->belongsTo(DistritoUser::class);
}
DistritoUser的模型
protected $table = 'distrito_user';
调用雄辩的模型
$user = Auth::user();
dd($user->distritoUtilizador);
返回null
。
第一个问题:这是解决问题的正确方法(用户住在某个地方,我需要填写该位置)?
如果这是解决问题的正确方法:为什么它没有返回所需的结果?
答案 0 :(得分:1)
对于简单的一对多,只需将外键存储到用户模型上,不需要中间表。
$table->increments('id')->unsigned();
$table->string('name');
$table->string('last_name');
$table->string('profile_picture')->default('default.jpg');
$table->string('userProfile')->default('');
$table->float('stars')->default(0);
$table->integer('distrito_id')->unsigned();
$table->foreign('distrito_id')->references('id')->on('distrito');
并完全摆脱distrito_user表。现在使用有这种方法:
public function distrito(){
return $this->belongsTo(Distrito::class, 'id');
}
而distrito有:
public function users(){
return $this->hasMany(User::class);
}
还将部署迁移更改为:
$table->increments('id')->unsigned();