Я пытаюсь обновить свой db, но он не работает должным образом.Метод обновления Laravel не работает
Я создаю метод обновления, проблема заключается в том, что он продолжает обновлять все записи с помощью product_id, тогда как он должен обновлять каждую запись. У меня есть, например, 10 записей с разными значениями в моем db.
Если я запустил сценарий, все записи получат первое значение из поля ввода.
Как я могу заставить его работать правильно?
Немного scretch о том, как мой дб, выглядит следующим образом:
id | product_id | short_name | input_video
___________________________________________________________________________
1 | 49 | de | c:\...
2 | 49 | en | c:\...
3 | 49 | tr | c:\...
4 | 49 | dr | c:\...
Если я запускаю мой код (собирание де) это выглядит следующим образом:
id | product_id | short_name | input_video
___________________________________________________________________________
1 | 49 | de | c:\...
2 | 49 | de | c:\...
3 | 49 | de | c:\...
4 | 49 | de | c:\...
код:
# save language selection
$lsCounter = 0;
$langSelecName = $request->input('language_selection');
$langSelecFile = $request->file('language_selection');
if($langSelecName)
{
$projectLangPath = $Path . "language";
foreach($langSelecName as $langSelecNameKey => $langSelecNameValue)
{
if($langSelecFile[$lsCounter]['input_vid_lang'] != null)
{
$langVidFileName = $langSelecFile[$lsCounter]['input_vid_lang']->getClientOriginalName();
$languages = new Language();
$languages['short_name'] = $langSelecNameValue;
$languages['input_video'] = $projectLangPath . '\\' . $langVidFileName;
$languages->product()->associate($product);
$langSelecName = $request->input('language_selection');
$langData = [
'short_name' => $languages['short_name'],
'input_video' => $languages['input_video']
];
$intProductID = intval($productID);
$findLang = $languages->where('product_id', $intProductID);
$productID = $data['id'];
if($findLang->update($langData))
{
$langSelecFile[$lsCounter]['input_vid_lang']->move($projectLangPath, $langVidFileName);
}
}
$lsCounter++;
}
}
Мое предложение where, вероятно, не так, но я не уверен, как его исправить.
Редактировать моя модель:
<?php
class Language extends Model
{
protected $table = 'products_languages';
protected $fillable = ['product_id', 'short_name', 'input_video'];
public function product()
{
return $this->belongsTo('App\Product', 'product_id');
}
}
Редактировать
Вид:
<fieldset class="form-group">
<select class="form-control" id="language_selection" name="language_selection[]" multiple>
@foreach($languages as $languageKey => $languageValue)
<option value="<?php echo $languageValue->short_name; ?>"><?php echo $languageValue->name; ?></option>
@endforeach
</select>
</fieldset>
@if($type == "edit")
<input name="id" type="hidden" value="{{ $productId }}">
@if($languagesCount > 0)
@foreach($languages as $languagesKey => $languagesValue)
<?php $i = 0 ?>
<span class="btn btn-primary btn-file lang-edit">{{ strtoupper($languagesValue->short_name) }}</span>
<?php $i++ ?>
@endforeach
@endif
@endif
Можете ли вы предоставить контент $ langSelecName? Также добавьте, что ваша языковая модель/класс? выглядит как. Почему у вас было short_name и input_video как ограничение ассоциативного массива, а не использование оператора объекта? –
@Frank Provost Я получаю этот выходной массив: 1 [▼ 0 => «de» ] – utdev
@FrankProvost Я добавил свою модель – utdev