(E_ERROR) 参数太少,无法运行 Symfony\Component\HttpKernel\Profiler



我想使用关系将配置文件模型与现有用户模型相关联 属于 和 hasOne,我遇到了这个错误。

这是我的个人资料.php

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Profile extends Model
{
public function user(){
return $this->belongsTo(User::class);
}
}

用户.php

<?php
namespace App;
use IlluminateNotificationsNotifiable;
use IlluminateContractsAuthMustVerifyEmail;
use IlluminateFoundationAuthUser as Authenticatable;
use SymfonyComponentHttpKernelProfilerProfile;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'username', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function profile()
{
return $this->hasOne(Profile::class);
}
}

在我的终端中,我可以通过配置文件获取用户,但无法使用 user 获取配置文件。 这是错误

$user->profile
TypeError: Too few arguments to function Symfony/Component/HttpKernel/Profiler/Profile::__construct(), 0 passed in /Users/macair13/freeCodeGram/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php on line 720 and exactly 1 expected. 

若要解决此问题,请将User.php文件顶部的use SymfonyComponentHttpKernelProfilerProfile;行替换为use AppProfile;

发生这种情况是因为您错误地在User.php文件顶部包含错误的类。当Laravel尝试加载关系时,它会尝试构造SymfonyComponentHttpKernelProfilerProfile对象,而不是构造预期的模型。

在用户模型中使用如下用途

public function profile()
{
return $this->hasOne('AppProfile', 'foreign_key');
}

我不确定您为什么在用户模型中使用SymfonyComponentHttpKernelProfilerProfile。当你的关系建立时,它是使用该Profile而不是你的配置文件模型。定义关系时,必须使用配置文件模型命名空间。

相关内容

  • 没有找到相关文章

最新更新