Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4从关系中收集数据_Php_Mysql_Laravel_Orm_Eloquent - Fatal编程技术网

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