Mauvaise mise à jour des données dans le fonctionnement de la base de données Laravel
P粉336536706
2023-08-07 20:33:01
<p>以下是我模型中的函数代码 :</p>
<pre class="brush:php;toolbar:false;">fonction publique updateAnime(Request $request)
{
$updatedFields = [];
$request->valider([
'titre' => ['requis'],
'release_date' => ['obligatoire', 'entier'],
'auteur' => ['requis'],
'studio' => ['requis'],
'description' => ['requis'],
]);
$request->release_date = (int)$request->release_date;
$animeInfo = Anime::where('title', $request->oldTitle)->with('authors', 'studios')->first();
$author = Author::firstOrCreate(['author' => $request->author]);
AuteurAnime::où([
['auteur', $animeInfo->auteurs[0]->auteur],
['anime', $request->oldTitle]
])->mettre à jour([
'auteur' => $auteur->auteur,
'anime' => str_replace(' ", '-', $request->titre)
]);
$studio = Studio::firstOrCreate(['studio_name' => $request->studio]);
StudioAnime::où([
['studio', $animeInfo->studios[0]->nom_studio],
['anime', $request->oldTitle]
])->mettre à jour([
'studio' => $studio->nom_studio,
'anime' => str_replace(' ", '-', $request->titre)
]);
foreach ($request->all() as $key => $value) {
if (property_exists($animeInfo, $key)) {
if ($request->$key != $animeInfo->$key) {
$updatedFields[$key] = $request->$key;
}
}
}
$animeInfo->update($updatedFields);
return réponse()->json(['message' => 'Les données ont été mises à jour avec succès. n Données mises à jour : ' . implode(', ', array_keys($updatedFields))]);
}</pré>
<p>控制器代码 :</p>
<pre class="brush:php;toolbar:false;">$anime = new Anime();
return $anime->updateAnime($request);</pre>
<p> 。Les gars, pourquoi cela se produit-il et comment le résoudre<br /><br />Quand dans mon code précédent, je viens de mettre à jour les données sans vérifier leurs modifications, tout a fonctionné</p><p>< /></p>
<pre class="brush:php;toolbar:false;">$animeInfo->update([
'titre' => str_replace(' ", '-',$request->titre),
'affiche' => $animeInfo->affiche,
'description' => $requête->description,
'release_date' => $request->release_date,
'bande-annonce' => $animeInfo->bande-annonce,
]);
return réponse()->json(['message' => 'Les données ont été mises à jour avec succès']);```</pre>
<p><br /></p>
Vous ne pouvez pas utiliser la fonction property_exist() pour obtenir les noms de colonnes car ces propriétés ne sont pas accessibles directement en tant que propriétés dans l'objet Model.
Pour vérifier cela, essayez-le sur bricoleur :
Ma suggestion est d'utiliser la méthode attributsarray() ou getAttributes() combinée avec array_keys() pour obtenir le tableau de noms d'attribut du modèle. N'est-ce pas fait ? :
.