2016-10-04 129 views
1

我有三个表格:users, emails,attachments。用户表通过user_id与电子邮件连接。电子邮件表通过email_id与附件连接。Laravel从3个表中获取相关数据

我的问题是:我应该如何让它看起来雄辩laravel让所有用户的电子邮件和他们的附件? (我知道如何让所有的用户和他们的电子邮件,但我不知道如何添加附件)

回答

2

根据你数据库的关系,你可以在你的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); 
} 

Email模型阅读使用ID的用户时检索相关附件(S),您可以尝试这样的事:

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

希望您已使用方法名称emailUser模型中为Email模型声明了关系方法。

注意:确保您已经为模型使用了正确的命名空间。如果你做得正确并且遵循了Laravel惯例,那么它可能会起作用,否则做一些研究。也check the documentation

+1

非常感谢!一切正常。 –

+0

你好,我还有一个问题。如果我想获取用户及其附件(没有电子邮件)(用户连接到电子邮件和电子邮件连接到附件),应该如何查看查询?现在我只是添加了另一个表附件(user_id)的密钥,但我认为没有这个附加密钥就可以获得数据。 –

+0

在这种情况下,您可以在'Model'中创建'atachments'关系方法,就像您在'Email'模型中创建的一样。 –