插入集合以保存许多 Eloquent

gui*_*sen 2 php laravel eloquent laravel-5

我有一个充满模型的集合,我如何将它们放入saveMany关系的方法中?我知道它必须是一个数组,但是当我这样做时,$collection->toArray()它们就不再是 Eloquent 模型了。

public function uploadAndGetModels($messageId, array $attachments)
{
    $models = new Collection();
    $attachments = new Collection($attachments);
    $attachments->each(function (UploadedFile $attachment) use ($messageId, $models) {
        $identifier = $this->uploader->makeIdentifier($attachment->getClientOriginalExtension());
        $this->uploader->uploadImage($attachment, "attachments/{$identifier}");
        $model = new Attachment(array('message_id' => $messageId, 'path' => $identifier));
        $models->push($model);
    });

    return $models;
}
Run Code Online (Sandbox Code Playgroud)

结果$models是一个Collection完整的Attachment模型。

if ($request->hasFile('attachments')) {
    $attachments = $attachmentRepository->uploadAndGetModels($message->id, $request->file('attachments'));
    $message->attachments()->saveMany($attachments);
}
Run Code Online (Sandbox Code Playgroud)

我将如何解决这个问题?

use*_*496 7

Collection类有一个all()返回集合中的所有项目作为模型的阵列的方法。

考虑到这一点,这应该有效......

$message->attachments()->saveMany($attachments->all());
Run Code Online (Sandbox Code Playgroud)