Ich versuche, meine db zu aktualisieren, aber es funktioniert nicht richtig.Laravel Update-Methode funktioniert nicht
Ich baue eine Update-Methode, das Problem ist, dass es aktualisiert alle Datensätze mit der Produkt-ID, während es jeden Datensatz aktualisieren sollte Ich habe zum Beispiel 10 Datensätze mit unterschiedlichen Werten in meiner Datenbank.
Wenn ich das Skript ausführen, erhalten alle Datensätze den ersten Wert aus dem Eingabefeld.
Wie kann ich sicherstellen, dass es richtig funktioniert?
Ein wenig scretch, wie meine db, sieht wie folgt aus:
id | product_id | short_name | input_video
___________________________________________________________________________
1 | 49 | de | c:\...
2 | 49 | en | c:\...
3 | 49 | tr | c:\...
4 | 49 | dr | c:\...
Wenn ich meinen Code (Kommissionierung de) laufen sieht es wie folgt aus:
id | product_id | short_name | input_video
___________________________________________________________________________
1 | 49 | de | c:\...
2 | 49 | de | c:\...
3 | 49 | de | c:\...
4 | 49 | de | c:\...
Code:
# 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++;
}
}
Meine Where-Klausel ist wahrscheinlich nicht richtig, aber ich bin mir nicht sicher, wie es zu beheben ist.
bearbeiten mein Modell:
<?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');
}
}
bearbeiten
Ausblick:
<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
Können Sie den Inhalt $ langSelecName angeben? Bitte fügen Sie auch Was Ihr Sprachmodell/Klasse? sieht aus wie. Warum haben Sie short_name und input_video als assoziative Array-Constraints verwendet und keinen Objektoperator verwendet? –
@Frank Provost Ich bekomme diese Ausgabe Array: 1 [▼ 0 => "de" ] – utdev
@FrankProvost Ich habe mein Modell hinzugefügt – utdev