Как определить тип данных перед возвратом данных JSON для API-интерфейса в laravel - PullRequest
0 голосов
/ 13 сентября 2018

Я разработал API-интерфейс для использования в мобильном телефоне.Все отлично работало до того, как я начал переносить код в другом домене.Внезапно я заметил, что один из типов данных user_id изменился на string, где он был int раньше, и все работало.

Это то, что я делаю в моем контроллере laravel

  $clubs=Club::with(['users' => function($q){
        $q->select('id','profilePic');
    }])->with('leagueCount')
    ->get();

   return response()->json([
        'success' => true,
        'clubs' => $clubs,
    ],200);

И это дает мне такой результат

success: true,
clubs: [
{
id: 8,
user_id: "34",  // this shouldn't be a string. It should be int.
 clubName: "PADELCENTER",
 clubDesc: "Testclub",
 color: "#424242",
 logo: "logotouse.png",
 created_at: "2018-05-12 07:44:40",
 updated_at: "2018-05-12 07:44:40",
 users: {
   id: 34,
   profilePic: "20KdcnX5Gb2dSfunwT8JtmBvcVopDmUwKmQ7XeUI.png"
 },
 league_count: [
 {
   id: 31,
   club_id: "8",
   total: "1"
 }
]
},

Вы можете видеть, что user_id является string это должно быть int

Есть ли в любом случае, что я принудительно установил тип данных в модели или где-то еще?

[Примечание: user_id является int и unsigned в базе данных как его внешний ключк таблице пользователей.]

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Есть два способа решить эту проблему

В вашей модели вы можете привести вывод из базы данных как

$casts = [
'user_id' => 'int'
];

Или вы можете использовать Resource php artisan make:resource Club

и после этого вы можете просто в toArray метод

  public function toArray($request)
    {
        return [
            // do casting in here
        ];
    }
0 голосов
/ 13 сентября 2018

Вы можете привести свойство к целому числу с помощью мутаторов Eloquent, например:

class Club extends Model
{
    protected $casts = [
        'user_id' => 'integer',
    ];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...