У меня есть модель документа, которая представляет собой документ (имя, описание и т. Д.). Затем у меня есть модель DocumentData, которая представляет данные документа. Документ имеет один для многих DocumentData,Laravel 5 - обновить все данные
Итак, чтобы создать документ, у меня есть форма. Допустим, что у моей формы есть текстовый ввод для владельца документа. В моей таблице DocumentData метка documentOwner задается как ключ, а введенные данные устанавливаются как значение. Таким образом, с несколькими элементами форм, мой DocumentData таблица может выглядеть следующим образом
document_data
id | documentId | key | value |
----------------------------------------------
1 | 1 | clientName | Google |
----------------------------------------------
2 | 1 | projectName | Analytics |
----------------------------------------------
3 | 1 | Contact | Mr Sharp |
----------------------------------------------
4 | 1 | startDate | 29/12/2016 |
----------------------------------------------
Наименование документа и описание для таблицы документов создается с помощью скрытых полей в поле зрения документа.
Поэтому я могу создавать документы без проблем. Однако у меня проблема с моей функцией обновления. До сих пор у меня есть следующие
public function update(Request $request, Project $project, $id)
{
$document = $project->document()->where('id', '=', $id)->first();
$docData = $document->documentData()->get();
$input = $request->all();
foreach($docData as $orgData) {
foreach($input as $key => $value) {
if($key !== "filePath" && $key !== "documentType" && $key !== "documentTypeDesc") {
if($key == $orgData->key) {
$orgData->value = $value;
$orgData->update();
}
}
}
}
return View::make($document->name.'Doc.edit', compact('project', 'document'));
}
Итак, во-первых я получаю документ я работаю, и хранить его в $ документа. Затем я получаю DocumentData для этого документа и сохраняю его в $ docData. $ docData - это коллекция, содержащая мои пары значений ключа для документа.
Затем я зациклирую как $ docData, так и введенные данные, и где совпадают ключи, я возвращаю его обновленное значение.
Однако на данный момент он обновляет все до последнего введенного поля данных. Я не уверен, где еще я могу выполнить операцию обновления, но мне нужно только обновить строку, на которую она ссылается, а не все.
Как я мог это сделать?
Благодаря
Можете ли вы привести нам пример данных, которые вы отправляете, а также структуру данных в пределах $ docData? Трудно точно интерпретировать, как должны устанавливаться данные в каждом месте. В настоящее время вы устанавливаете одинаковые исходные данные для каждого $ orgData в цикле. Скорее всего, поэтому ваше значение всегда является последним, поскольку с каждой итерацией входных данных вы переопределяете ранее установленное значение $ orgData->. – jardis
Несомненно, никаких проблем, я обновил исходное сообщение, которое лучше показывает проблему. –