Laravel 4从关系中收集数据

时间:2015-05-28 15:17:49

标签: php mysql laravel orm eloquent

在我的应用程序中,我有一个Notifications表和一个Users表,一个通知可以属于很多用户,所以在我的通知类中我有以下内容,

public function user()
{
    return $this->belongsToMany('User');
}

在我的数据库中,我还有一个名为notification_user的表,它位于我的notifications表旁边。 notification_user表包含以下行

notification_id,user_id,is_read,created_at,updated_at

我正在运行以下代码以返回特定用户的通知

$notifications = Notification::whereHas('user', function($q){
        $q->where('user_id', '=', 101);
})->get();

我发现的问题是,这不会从我迫切需要的notification_user表中返回is_read属性!我试过添加,

在查询之后

$notification->load('user'),但这只是将用户数据添加为对象。

是否还可以获取关系表数据?

1 个答案:

答案 0 :(得分:0)

您需要在关系中添加一些额外内容,以告诉laravel从数据透视表中提取额外数据。 (不要忘记在你的关系中的另一个模型上这样做)

import pandas

df = pandas.read_csv("data.csv")
dfe = pandas.ewma(df, span=60)

然后,您应该在模型上使用public function user() { return $this->belongsToMany('User')->withPivot('is_read'); } 属性,并使用->pivot属性。 (例如:$ notification-> pivot-> is_read)文档http://laravel.com/docs/5.0/eloquent#working-with-pivot-tables

简要介绍了这一点。

如果您已拥有用户ID,只是为了让自己更轻松,您是否只能使用它们之间的关系?

is_read