Laravel从3个表中获取相关数据

时间:2016-10-04 22:18:14

标签: laravel eloquent

我有三张桌子:npm install。用户表通过user_id与电子邮件相关联。电子邮件表通过email_id与附件连接。

我的问题是:我应该如何在laravel中使其看起来很有说服力,以便让所有用户收到他们的电子邮件及其附件? (我知道如何让所有用户和他们发送电子邮件,但我不知道如何添加附件。)

1 个答案:

答案 0 :(得分:4)

根据您的数据库关系,您可以在Email模型中声明关系方法,例如:

// One to One (If Email has only one attachment)
public function attachment()
{
    return $this->hasOne(Attachment::class);
}

否则:

// One to Many (If Email contains more than one attachment)
public function attachments()
{
    return $this->hasMany(Attachment::class);
}

要在使用ID读取用户时从Email模型中检索相关附件,您可以尝试以下操作:

$user = User::with('email.attachment')->find(1); // For One-to-One
$user = User::with('email.attachments')->find(1); // For One-to-Many

希望您已使用方法名称UserEmail模型的email模型中声明了关系方法。

注意:请确保您已为模型使用了正确的命名空间。如果您已经完成所有事情并遵循Laravel约定,它可能会起作用,否则请进行一些研究。还check the documentation