用户模型
class User extends Authenticatable{
public function enrollments() {
return $this->hasMany('App\enrollments','user_email');
}
}
批量模型
class batch extends Model{
protected $table = 'batch';
public function enrollments() {
return $this->hasMany('App\enrollments');
}
}
注册模型
class enrollments extends Model{
public function batch() {
return $this->belongsTo('App\batch');
}
public function user() {
return $this->belongsTo('App\User','email');
}
}
如果我使用$ enrollment-> batch->标题,它可以工作.. 但如果我使用$ enrollment-> user-> name,则会出错
尝试获取非对象的属性
请帮忙,我被困住了 提前致谢
修改
问题出现后,我将用户和注册之间的外键从ID更改为电子邮件,并从user_id将我的列重命名为user_email。在此代码正常工作之前。
解决
遇到了问题,注册时的一些数据没有注册用户的电子邮件。
答案 0 :(得分:0)
此代码仅会因为用户不是模型的子项而注意到工作。要解决此问题,您必须从Model
延伸。 Authenticatable
是interface
,并且有一个等效的trait
;没有这样的课程。
如果您希望您的用户类是Authenticatable,则必须实现该接口。但要回答您的问题,请扩展基本模型Model
。
class User extends Model {
public function enrollments() {
return $this->hasMany('App\enrollments','user_email');
}}
此外:
如果您需要将现有用户实例记录到您的应用程序中, 您可以使用用户实例调用login方法。给定的对象 必须是一个实现 照亮\合同\ Auth \ Authenticatable合同。当然, Laravel附带的App \ User模型已经实现了这一点 接口: