【问题标题】:Insert Collection to saveMany Eloquent插入集合以保存许多 Eloquent
【发布时间】:2015-04-24 18:46:59
【问题描述】:

我有一个包含模型的集合,我如何将它们放入关系的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;
}

$models 的结果是一个充满Attachment 模型的Collection

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

我该如何解决这个问题?

【问题讨论】:

    标签: php laravel eloquent laravel-5


    【解决方案1】:

    Collection 类有一个 all() 方法,它将集合中的所有项目作为模型数组返回。

    考虑到这一点,这应该可以工作......

    $message->attachments()->saveMany($attachments->all());
    

    【讨论】:

      猜你喜欢
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2016-10-14
      • 2020-02-12
      • 2013-01-06
      • 2016-03-16
      • 1970-01-01
      相关资源
      最近更新 更多