Laravel流明多对一return[]

Laravel Lumen Many to One return []

我是 Lumen 的新手,但我必须这样做,因为我有关于 Laravel 的最后任务。

所以,我确实有这两个 table,用户和用户类型 table。

用户类型table

+-----------------------+
| userTypeId | typeName |
+-----------------------+
| 1          | admin    |
| 2          | buyer    |
| 3          | store    |
+-----------------------+

用户table

+----------------------------------+
| id | name | email   | userTypeId |
+----------------------------------+
| 1  | john | e@e.com | 2          |
+----------------------------------+

现在,我希望输出是这样的:

{
  "data" : {
     "id" : 1,
     "nama" : "john",
     "email" : "e@e.com",
     "usertypes" : {
           "typesName" : "buyer"
      }
   }
}

我已经尝试了 hasMany() 和 hasOne() 等等,但 "userTypes" 字段仍然 return []。这是两者的模型。

User.php

....
public function usertype() {
   return $this->hasMany(UserTypes::class, 'userTypeId');
}
....

UserTypes.php

.....
public function User() {
   return $this->belongsTo(User::class);
}
.....

这是 UserController.php

...
public function user($id) {
   $user = User::with(['usertype'])->findOrFail($id);
   return response()->json(['data' => $user]);
}
...

有什么办法可以解决这个问题吗?我感谢任何愿意帮助我的人。谢谢

Its better to use find method you use route model binding. when you pass id 
to method User $user auto find user from databse. now we have $user so we 
call relation $user->usertype.
public function user(User $user) {
return response()->json(['data' => $user->usertype]);
}

所以看来我还没有完全理解 "third parameters" 的含义,感谢电报组中的某个人帮助我,在用户模型中它应该是:

return $this->hasOne(UserTypes::class, 'userTypeId', 'userTypeId');

并且有效。第二个参数是 users table 的外键,第三个参数是 userTypes table 中的主列名称。希望它清除了像我这样愚蠢的新手。