【发布时间】:2016-12-07 16:16:36
【问题描述】:
我正在尝试更新我的数据库,但它无法正常工作。
我构建了一个更新方法,问题是它不断更新所有带有 product_id 的记录,而它应该更新每条记录 例如,我的数据库中有 10 条具有不同值的记录。
如果我运行脚本,所有记录都会从输入字段中获取第一个值。
如何让它正常工作?
我的数据库的一点点,看起来像这样:
id | product_id | short_name | input_video
___________________________________________________________________________
1 | 49 | de | c:\...
2 | 49 | en | c:\...
3 | 49 | tr | c:\...
4 | 49 | dr | c:\...
如果我运行我的代码(选择 de),它看起来像这样:
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" ]
-
@FrankProvost 我添加了我的模型
-
我很难理解你当前的代码。似乎您并没有真正使用 laravel 的所有功能。这使得阅读变得困难。也许您可以用简单的方式描述您在代码中真正想要实现的目标。你的前端是什么样子的?如果输入数据只包含一个值,为什么需要循环遍历它。
-
@FrankProvost 我针对该特定问题添加了我的观点
标签: php sql laravel foreign-keys where