【发布时间】:2021-07-17 22:30:00
【问题描述】:
我有一个 User 模型 hasOne Membership 模型,有一个 users 表和一个 memberships 表(memberships 表中的每个条目都有一个 外键 链接到 user_id)。
我创建了一个注册页面,让用户有 7 天的会员试用期,但我无法存储数据。
这是注册表中数据的dd():
"_token" => "ckRlMligEyTwu7ssOi4TmesycbsPpVQlrJ4jQaBd"
"username" => "JaneDoe"
"password" => "password"
"password_confirmation" => "password"
"expiration" => "2021-04-30"
现在在我的控制器中,我有以下 store() 方法:
public function store(Request $request) {
// validating
$this->validate($request, [
'username' => ['required', 'max:200'],
'password' => 'required|confirmed',
'expiration' => 'required'
]);
// storing
User::create([
'username' => $request->username,
'password' => Hash::make($request->password),
'expiration' => $request->expiration
]);
}
这不会在memberships 表中存储任何内容,我不知道如何使用模型声明的雄辩关系正确编写store 方法。
感谢您的帮助。
编辑:
在尝试理解时,我修改了 store() 函数,现在看起来像这样:
public function store(Request $request) {
// validating
$this->validate($request, [
'username' => ['required', 'max:200'],
'password' => 'required|confirmed',
'expiration' => 'required'
]);
// storing
User::create([
'username' => $request->username,
'password' => Hash::make($request->password)
])->membership(Membership::create([
'expiration' => $request->expiration
]));
}
现在似乎 Laravel 不知道从哪里获取新创建用户的 user_id,就像错误提示的那样:
SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value (SQL: insert into `memberships` (`expiration`, `updated_at`, `created_at`)
【问题讨论】:
-
错误是什么?您需要在此处发布错误
-
由于不相关的原因给了我一个错误,但在更正它并仔细检查之后,它现在不会在
memberships表中存储任何内容
标签: php laravel eloquent laravel-8 eloquent-relationship