У меня есть две модели User
и Patient
. Внешний ключ в таблице пациентов: user_id
.
Пользователь
class User extends Authenticatable
{
public function patient()
{
return $this->hasOne(Patient::class);
}
}
Пациент
class Patient extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
}
Когда я запустил этот скрипт, он не получает данные обеих таблиц
$patient_user = User::find($user->id)->patient;
Результат
{
"success": {
"id": 1,
"user_id": 1,
"ic": null,
"gender": null,
"age": null,
"height": null,
"weight": null,
"allergy": null,
"created_at": null,
"updated_at": null
}
}
Ожидаемый результат
{
"success": {
"name": "Mohammad",
"email": "mohammadnrdn@gmail.com",
"role": 1,
"phone_number": null,
"country_code": null,
"authy_id": null,
"verified": "0",
"ic": null,
"gender": null,
"age": null,
"height": null,
"weight": null,
"allergy": null,
"created_at": "2018-08-28 07:42:16",
"updated_at": "2018-08-28 07:42:16"
}
}
Структура
CREATE TABLE `users` (
`id` int(10) UNSIGNED NOT NULL,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`role` int(11) NOT NULL DEFAULT '1',
`phone_number` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`country_code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`authy_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`verified` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '0',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `patients` (
`id` int(10) UNSIGNED NOT NULL,
`user_id` int(11) UNSIGNED NOT NULL,
`ic` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`gender` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`height` decimal(8,2) DEFAULT NULL,
`weight` decimal(8,2) DEFAULT NULL,
`allergy` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Как этого добиться?