我今天对代码的使用感到非常奇怪。我可以保证直到今天为止一切都很好。
这是事实,我在.as-console-wrapper {min-height: 100%}
和User
模型之间具有这样的一对一关系
BankAccount
最初创建用户帐户时,public function bankAccount()
{
return $this->hasOne(BankAccount::class, 'user_id');
}
表中没有该用户的记录。然后,用户可以使用此方法创建银行帐户记录
bank_accounts
还有public function update(Request $request, User $user)
{
// create record if user does not have a bankAccount
if (!$user->bankAccount) {
$user->bankAccount()->create($request->all());
} else {
$user->bankAccount()->update($request->all());
}
return new BankAccountResource($user->bankAccount);
}
BankAccountResource
我遇到的问题是,当用户使用public function toArray($request)
{
return [
'user_id' => $this->user_id,
'bank_name' => $this->bank_name,
'bvn' => $this->bvn,
'account_no' => $this->account_no
];
}
首次创建银行帐户记录时,出现以下错误异常
“ message”:“试图获取非对象的属性'user_id'” 但是在数据库中,记录实际上是创建的,所以我想知道为什么会引发错误。
对于更新$user->bankAccount()->create($request->all());
,我得到了返回正确的响应,看起来像这样
$user->bankAccount()->update($request->all());
如何解决此问题?
答案 0 :(得分:0)
我认为该问题是创建$ user,在创建之后,您可以使用您的用户和您的关系来创建bankAccount:
$user = User::create($request->all());
$userBank = $user->bankAccount()->create($request->all());
您需要先拥有$ user才能使用它。