Laravel Люмен Многие к одному возвращаются [] - PullRequest
0 голосов
/ 08 мая 2020

Я новичок в Lumen, но мне нужно это сделать, потому что у меня последняя задача около Laravel.

Итак, у меня есть эти две таблицы, таблица users и userTypes.

таблица usertypes

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

таблица пользователей

+----------------------------------+
| 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» по-прежнему возвращает []. Вот модель для обоих.

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

Как это исправить? Я признателен всем, кто хочет мне помочь. Спасибо ??

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Получается, что я не совсем понимаю значение «третьих параметров», и благодаря кому-то из группы телеграмм, которые помогли мне, в модели User это должно быть:

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

и это работает. Второй параметр - это внешний ключ в таблице пользователей, третий параметр - это имя основного столбца в этой таблице userTypes. Надеюсь, это очистит тупого новичка ie вроде меня.

it works!

0 голосов
/ 08 мая 2020
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]);
}
...