2016-10-04 126 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'模型中創建的一樣。 –