创建数据库记录时尝试获取非对象的属性“ user_id”

时间:2019-08-30 11:30:37

标签: php laravel laravel-5.8

我今天对代码的使用感到非常奇怪。我可以保证直到今天为止一切都很好。

这是事实,我在.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());

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

我认为该问题是创建$ user,在创建之后,您可以使用您的用户和您的关系来创建bankAccount:

$user = User::create($request->all());
$userBank = $user->bankAccount()->create($request->all());

您需要先拥有$ user才能使用它。