Éloquent: find() et où() utilisation laravel
Je suis en train d'essayer d'obtenir un enregistrement à partir d'une posts
table de base de données à l'aide de son id. J'ai été frapper ma tête sur la méthode find() pour un certain temps maintenant, confus quant à pourquoi il ne fonctionnait pas. Voici ma requête qui semble correct pour moi, mais n'a pas fonctionné:
$post = Post::find($id);
$post->delete();
À contrecœur je l'ai fait:
$post = Post::where('id', $id);
$post->delete();
et de manière assez surprenante, il a travaillé, mais je n'ai aucune idée de comment.
Je sais aussi que, contrairement à find()
, where()
est un générateur de requêtes et donc je pourrais aussi l'utiliser comme ceci:
Post::where('id', $id)->first()
Toutes les idées à propos de la différence dans la façon dont les méthodes de travail?
OriginalL'auteur Awa Melvine | 2016-11-21
Vous devez vous connecter pour publier un commentaire.
Votre code a l'air bien, mais il ya un couple de choses à connaître:
Post::find($id);
agit sur la clé primaire, si vous avez mis votre clé primaire de votre modèle pour autre chose queid
par:puis
find
recherche par clé à la place.Laravel attend également la
id
entier, si vous utilisez autre chose qu'un entier (comme une chaîne de caractères), vous devez définir l'incrémentation de la propriété sur votre modèle de faux:OriginalL'auteur craig_h
À ajouter à craig_h du commentaire ci-dessus (j'ai actuellement n'ont pas assez de rep à ajouter un commentaire à sa réponse, désolé), si votre clé primaire n'est pas un nombre entier, vous aurez également besoin de dire à votre modèle de ce type de données qu'il est, par la mise en keyType au sommet de la définition du modèle.
Éloquent comprend l'un des types définis dans le
castAttribute()
fonction, qui, comme de Laravel 5.4: int, float, string, bool, un objet, un tableau, la collecte, la date et l'horodatage.Cela permettra d'assurer que votre clé primaire est correctement exprimés en équivalent type de données PHP.
OriginalL'auteur SlyDave