Laravel流明多对一返回[]

问题描述 投票:0回答:2

我在流明还很陌生,但我必须这样做,因为我要完成有关Laravel的任务。

所以,我确实有这两个表,users和userTypes表。

用户类型表

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

用户表

+----------------------------------+
| id | name | email   | userTypeId |
+----------------------------------+
| 1  | john | [email protected] | 2          |
+----------------------------------+

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

{
  "data" : {
     "id" : 1,
     "nama" : "john",
     "email" : "[email protected]",
     "usertypes" : {
           "typesName" : "buyer"
      }
   }
}

我已经尝试过hasMany()和hasOne()等,但“ userTypes”字段仍返回[]。这是两者的模型。

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]);
}
...

任何解决此问题的方法?我感谢任何愿意帮助我的人。谢谢🙏🙏

php json database laravel lumen
2个回答
0
投票
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]);
}

0
投票

因此,似乎我不完全理解“第三参数”的含义,并且由于电报小组中的某人帮助了我,在用户模型中应该是:]

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

并且有效。第二个参数是用户表上的外键,第三个参数是该userTypes表中的主列名称。希望它能像我一样清除愚蠢的新手。

it works!

© www.soinside.com 2019 - 2024. All rights reserved.