Я создаю проект, где пользователи могут учиться с помощью флэш-карт.У меня есть API, из которого пользователи могут получать колоды карт.Пользователи, не прошедшие проверку подлинности, могут получать колоды, но их результаты обучения не сохраняются в базе данных.
Я хотел бы, чтобы прошедший проверку пользователь получал дополнительные данные в ответ при извлечении флэш-карт из API.Более конкретно, каждая карта должна иметь дополнительное поле 'study_at', содержащее дату, когда они должны изучить эту карту в следующий раз.
Дата 'study_at' хранится в сводной таблице с именем 'card_user'.
Я пытался изменить метод toArray () в модели Card, но я не знаю, был ли это путь.
Это конечная точка API:
Route::get('/decks', 'DecksController@index');
DecksController
class DecksController extends Controller
{
public function index()
{
$decks = Deck::all();
return new DeckCollection($decks);
}
DeckCollection
class DeckCollection extends ResourceCollection
{
public function toArray($request)
{
return parent::toArray($request);
}
}
DeckResource
class DeckResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'cards' => new CardCollection($this->cards),
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
}
CardCollection
class CardCollection extends ResourceCollection
{
public function toArray($request)
{
return parent::toArray($request);
}
}
CardResource
Здесь я хочу включить дату 'study_at'
class CardResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'front' => $this->front,
'back' => $this->back,
// Include 'study_at' date here
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
}
Это ответ, который я хотел бы получить для аутентифицированного пользователя:
{
"id": 1,
"name": "Coffee Break French",
"cards": [
{
"id": 1,
"front": "Good morning",
"back": "Bonjour",
"study_at": "2019-05-26T15:00:00.000000Z"
"created_at": "2019-04-14T21:04:05.000000Z",
"updated_at": "2019-04-14T21:04:05.000000Z"
},
{
"id": 2,
"front": "Good afternoon",
"back": "Bonne après-midi",
"study_at": "2019-05-26T15:00:00.000000Z"
"created_at": "2019-04-14T21:04:21.000000Z",
"updated_at": "2019-04-14T21:04:21.000000Z"
},
{
"id": 3,
"front": "My name is John",
"back": "Je m'appelle John",
"study_at": "2019-05-26T15:00:00.000000Z"
"created_at": "2019-04-14T21:04:37.000000Z",
"updated_at": "2019-04-14T21:04:37.000000Z"
}
],
"created_at": "2019-04-14T21:03:38.000000Z",
"updated_at": "2019-04-14T21:03:38.000000Z"
}