2017-05-31 42 views
0

我有一個自定義功能來解析傳入的電子郵件及其附件。當然,一封電子郵件可能包含多個附件。如何在保存到Laravel之前將多個值添加到模型中?

我有這樣的代碼:

public function parseEmail() { 
    // read from stdin 
    $fd = fopen("php://stdin", "r"); 
    $rawEmail = ""; 
    while (!feof($fd)) { 
     $rawEmail .= fread($fd, 1024); 
    } 
    fclose($fd); 
    $parser = new Parser(); 
    $parser->setText($rawEmail); 

    $email = new Email; 
    $email->to = $parser->getHeader('to'); 
    $email->from = $parser->getHeader('from'); 
    $email->subject = $parser->getHeader('subject'); 
    $email->body_text = $parser->getMessageBody('text'); 

    $attachments = $parser->getAttachments(); 
    $filesystem = new Filesystem; 
    foreach ($attachments as $attachment) { 
     $filesystem->put(public_path() . '/uploads/' . $attachment->getFilename(), $attachment->getContent()); 
     $email->attachement()->name = $attachment->getFilename(); 
    } 
    $email->save(); 

} 

下面這段代碼只能存儲一個attachement。但是,如何更新以在模型中存儲多個附件?

+0

在你的foreach循環中包含'$ email-> save();' – hassan

回答

1

你可以改變這一行$email->attachement()->name = $attachment->getFilename();$email->attachement()->name[] = $attachment->getFilename();推送到陣列的所有附件,之後,你可以序列化和保存,如果這適用於商業邏輯。

相關問題