Laravel Éloquent n'est pas de mise à jour uniquement insertion
Je suis confronté à quelques problèmes avec PHP Laravel fonction de mise à jour. Il n'a pas de mise à jour, insérez uniquement.
public function post_rate(){
$o = Input::all();
//has user already rated?!
$query = DB::table("ratings")->select("id")->where("user", "=", Auth::user()->id)->where("story_id", "=", $o['story_id'])->get();
foreach ( $query as $d):
$theID = $d->id;
endforeach;
if ( empty($query)): //User hasn't rated!
$z = new Rating();
else:
$z = new Rating($theID); //user has rated, tell which to update
-----------------------------^ that cause the problem!
endif;
$z->story_id = $o['story_id'];
$z->user = Auth::user()->id;
$z->rating = $o['rating'];
$z->save();
echo "OK";
}
Il fonctionne lorsque aucune ligne fondée, mais quand je vais l'utiliser de nouveau la Cote (à quelque chose), il échoue.
la colonne id de la "notation" de la table est primaire et auto_increment.
Dans mon modèle, j'ai aussi mis en place
public static $key = 'id';
La sortie "$theID" contient également de l'correctement l'ID de la base de données mysql ligne.
Conseil-si vous voulez obtenir un tableau contenant les valeurs à partir d'une seule colonne, vous pouvez le faire de cette façon: $idArray = DB::table("notes")->where("utilisateur", "=", Auth::user()->id)->where("story_id", "=", $o['story_id'])->listes('id');
OriginalL'auteur kim larsen | 2013-06-17
Vous devez vous connecter pour publier un commentaire.
Essayer:
$z = Rating::find($theID)
avec->first()
ou->get()
au lieuil fonctionne, désolé!!! merci beaucoup
Veuillez marquer comme résolu si cela a aidé
OriginalL'auteur Half Crazed
ou
Les deux sont équivalents.
OriginalL'auteur coffe4u
Afin de mettre à jour dans laravel simplement utiliser la commande
J'espère que cela peut être de quelque secours.
OriginalL'auteur saran banerjee
Le mec !
Je prenais le même problème. Vérifier le code source, j'ai trouvé que le champ approprié pour définir la clé primaire nom est "primarykey'.
Par exemple:
OriginalL'auteur Luiz Alb Silva
Prendre facile !
jetez un oeil à cela , lorsque l'utilisateur n'a pas classé il vous suffit d'enregistrer comme vous le faisiez avant !
et dans le mise à jour partie ! procédez comme suit :
OriginalL'auteur Mehdi Maghrooni
Pour l'enregistrement, l'Éloquence n'était pas l'exécution de la mise à jour car la méthode que j'ai utilisé (voir ci-dessous) n'a pas fixé le existe attribut de vrai. C'est parce que je recevais tous les champs retournés ($ request-> all) à partir de la demande et de créer un modèle, mais qui ne permettent pas l'objet de mise à jour.
, Cela ne fonctionne pas
Cela aussi n'a pas de travail
Ce travail!!
OriginalL'auteur Gilberto Alexandre
J'ai également fait face à un même problème, il s'avère être éloquent modèle de problème.
Tout d'abord ajouter un protégé le nom du tableau à remplir dans votre modèle et de définir les attributs.Comme
Il y a beaucoup de façon de mettre à jour le tableau dans Laravel dans votre cas.
En place de la mise à jour que vous pouvez également utiliser le remplir comme.
Il y a toujours DB::table de méthode, mais à n'utiliser que lorsqu'aucune option n'est disponible.
OriginalL'auteur Ravi Ranjan