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 中的主列名称。希望它清除了像我这样愚蠢的新手。
我是 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 中的主列名称。希望它清除了像我这样愚蠢的新手。