2017-05-31 81 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();推送到阵列的所有附件,之后,你可以序列化和保存,如果这适用于商业逻辑。

相关问题