尝试在 laravel 5.3 应用程序中获取非对象的属性,尽管模型关系似乎是合适的



用户模型

class User extends Authenticatable{
    public function enrollments() {
        return $this->hasMany('Appenrollments','user_email');
    }
}

批量模型

class batch extends Model{
    protected $table = 'batch';
    public function enrollments() {
        return $this->hasMany('Appenrollments');
    }
}

注册模型

class enrollments extends Model{
    public function batch() {
        return $this->belongsTo('Appbatch');
    }
    public function user() {
        return $this->belongsTo('AppUser','email');
    }
}

如果我使用 $enrollment->批处理>标题,它可以工作。但是如果我使用 $enrollment->user->name,它会给出错误

尝试获取非对象的属性

请帮忙,我被困住了提前致谢

编辑

我将用户和注册之间的外键从 id 更改为电子邮件并将我的列重命名为 user_email from user_id 后,出现了问题。在该代码正常工作之前。

解决

遇到了问题,这是注册中的一些数据,这些数据没有与用户注册电子邮件。

此代码将记录工作,因为用户不是模型的子级。要修复它,您必须从 Model 扩展。 Authenticatable是一个interface,并且有一个等效的trait;没有这样的类。

如果您希望用户类是可验证的,则必须实现该接口。但是要回答您的问题,请扩展基本模型,Model .

   class User extends Model {
    public function enrollments() {
        return $this->hasMany('Appenrollments','user_email');
    }}

另外:

如果需要将现有用户实例登录到应用程序中, 您可以使用用户实例调用登录方法。给定的对象 必须是 照亮\合同\身份验证\可验证合同。当然, Laravel附带的应用程序\用户模型已经实现了这一点 接口:

https://laravel.com/docs/5.3/authentication

最新更新