我正在构建一个简单的通知系统。我可以通过Auth::user()->notifications获得登录的用户通知,但我的最终目标是也获取通知所来自的用户信息。
我希望最终的结果是
foreach( Auth::user()->notifications AS $n)
{
echo $n->from->username;
}目前,这抛出了一个“尝试获取非对象的属性”错误。
通知表;
id
user_id - notification for this user
from_user_id - notification from this userUser.php;
public function notifications()
{
return $this->hasMany('App\Notification', 'user_id', 'id')->orderBy('notifications.id','desc');
}
public function notificationsUnread()
{
return $this->hasMany('App\Notification', 'user_id', 'id')->where('notifications.seen',null)->orderBy('notifications.id','desc');
}Notification.php;
public function to()
{
return $this->belongsTo('App\User', 'user_id');
}
public function from()
{
return $this->belongsTo('App\User', 'from_user_id');
}发布于 2017-06-26 10:32:42
首先,您需要在表notifications中设置一个外键;然后,用户可以拥有一个notif。同时也会有很多人。通知。属于一个用户,并且有很多通知。可以属于某个用户。因此,在通知模型上,您可以这样设置关系belongsTo;
外键:
$table->foreign('from')->refrences('id')->on('users')->onDelete('cascade');然后是关系:
public function users()
{
return $this->belongsTo('App\User');
}然后你可以从控制器获取用户信息,如下所示;
$userName= Notification::users()->name;在您的例子中,您错误地指向了它,因为您像调用非方法一样调用from,因此您将只获得关系类型而不是数据对象。你应该这样做:
foreach( Auth::user()->notifications AS $n)
{
echo $n->from()->username;
}https://stackoverflow.com/questions/44752284
复制相似问题