我在laravel中定义了一个简单的一对多关系。用户拥有许多积分,而积分属于用户。
用户模型
/**
* Relationship to the users credits
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function credits()
{
return $this->hasMany(Credit::class);
}
信用模型
/**
* Relationship to the user that this credit belongs to
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function user()
{
return $this->belongsTo(User::class);
}
调节器
/**
* Return a user
*
* @param $user_id
*
* @return User
*/
public function getUser($user_id)
{
$user = $this->user->findOrFail($user_id);
// Dumping and Dieing works fine, but when i return
// the User instance i get an error.
// dd($user->toArray());
return $user;
}
我得到的错误:
“error”:0,“message”:“类Illuminate \ Database \ Eloquent \ Collection的对象无法转换为int”
发现了这个问题。
模型中还有另一个地方期望$ this-> credits返回null。该代码预计此代码更新,但没有考虑$ this-> credits将是一个集合的事实。
如果你想从这个user_id获取用户,只需在你的控制器中写User::where('user_id', '=', $user_id)->first()
。并且不要忘记将user_id从刀片传递给控制器。我希望这对你有用