Я хочу выяснить, как сделать запрос, чтобы получить результат, который был создан текущим пользователем или родителем текущего пользователя.
У меня есть две таблицы users
и workouts
.В обеих таблицах есть столбец created_by
, в котором хранится идентификатор пользователя, который создал упомянутого пользователя или запись о тренировке.
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`created_by` int(10) unsigned DEFAULT NULL,
`name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `users_created_by_foreign` (`created_by`),
CONSTRAINT `users_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
);
CREATE TABLE `workouts` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`created_by` int(10) unsigned NOT NULL,
`description` text COLLATE utf8_unicode_ci,
`name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `workouts_created_by_foreign` (`created_by`),
CONSTRAINT `workouts_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`)
);
В моей модели пользователя у меня есть функция, которая возвращает все тренировки, созданные пользователем..
public function createdWorkouts(): HasMany
{
return $this->hasMany(Workout::class, 'created_by');
}
Я хочу выяснить, как я могу запросить поиск тренировки с использованием идентификатора, но только для тренировок, созданных текущим пользователем или создателем текущего пользователя.Ниже приведена логика текущего маршрута, которая возвращает только тренировки, созданные текущим пользователем.
$user = User::find(1); // This would come from the JWT
if (!$workout = $user->createdWorkouts()->find($args[‘workout_id’])) {
return $response->withJson([], 404);
}