Php Laravel 4从关系中收集数据
在我的应用程序中,我有一个通知表和一个用户表,一个通知可以属于许多用户,因此在我的通知类中,我有以下内容:Php Laravel 4从关系中收集数据,php,mysql,laravel,orm,eloquent,Php,Mysql,Laravel,Orm,Eloquent,在我的应用程序中,我有一个通知表和一个用户表,一个通知可以属于许多用户,因此在我的通知类中,我有以下内容: public function user() { return $this->belongsToMany('User'); } 在我的数据库中还有一个名为notification\u user的表,它与我的notifications表并列。notification\u user表包含以下行 通知id、用户id、已读取、已创建、已更新 我正在运行以下代码以返回特定用户的通知
public function user()
{
return $this->belongsToMany('User');
}
在我的数据库中还有一个名为notification\u user
的表,它与我的notifications
表并列。notification\u user
表包含以下行
通知id、用户id、已读取、已创建、已更新
我正在运行以下代码以返回特定用户的通知
$notifications = Notification::whereHas('user', function($q){
$q->where('user_id', '=', 101);
})->get();
我发现的问题是,这不会从notification\u user
表返回我急需的is\u read属性!我试着加上
$notification->load('user')
在查询之后,但这只是将用户数据添加为对象
还有其他方法可以获取关系表数据吗?您需要在关系中添加一点额外的数据,以告诉laravel从数据透视表中提取额外的数据。(别忘了在你们关系中的另一款车型上也这样做) 然后,您应该在带有
is_read
属性的模型上具有->pivot
属性。(例如:$notification->pivot->is_read)文档中简要介绍了这一点
如果您已经有了用户ID,只是为了方便自己,您不能只使用它们之间的关系吗
$user = User::find(101);
foreach($user->notifications as $notifications)
{
if ($notification->pivot->is_read === false)
{
// Notification is unread, lets do something
}
}
$user = User::find(101);
foreach($user->notifications as $notifications)
{
if ($notification->pivot->is_read === false)
{
// Notification is unread, lets do something
}
}