(E_ERROR)函数Symfony \ Component \ HttpKernel \ Profiler \ Profile :: __ construct()的参数太少,已传递0

时间:2019-08-18 08:35:21

标签: php laravel

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

这是我的Profile.php

    <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Profile extends Model
{
    public function user(){
        return $this->belongsTo(User::class);
    }
}

User.php

     <?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Symfony\Component\HttpKernel\Profiler\Profile;

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->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. 

2 个答案:

答案 0 :(得分:0)

要解决此问题,请用use Symfony\Component\HttpKernel\Profiler\Profile;替换 User.php 文件顶部的use App\Profile;行。

发生这种情况是因为您在User.php文件的顶部错误地包含了错误的类。当Laravel尝试加载关系时,它会尝试构造一个Symfony\Component\HttpKernel\Profiler\Profile对象,而不是构造您想要的模型。

答案 1 :(得分:0)

在用户模型中以如下方式使用

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

我不确定您为什么在用户模型中使用Symfony\Component\HttpKernel\Profiler\Profile。建立关系时,它使用的是Profile,而不是您的个人资料模型。定义关系时,必须使用Profile Model命名空间。