Vérifier si la ligne existe, Laravel
J'ai le texte suivant db structure:
items:
id, name, user_id
users table:
id, name
user_favorites table:
id, user_id, item_id
Sur mes articles permalien pages, j'ai un 'Ajouter aux favoris' le bouton qui insère une nouvelle ligne dans user_favorites
Je veux être capable de le remplacer par un "Supprimer des favoris" si l'utilisateur a déjà dans ses favoris.
Je ne peux pas comprendre la logique derrière cela - ce que je dois vérifier si une ligne existe dans user_favorites
qui a le courant id de l'utilisateur et le permalien de l'id de l'élément? Cela n'a pas fonctionné pour moi:
if (Auth::user()->id) {
if (!is_null(DB::table('user_favorites')->where('user_id', '=', Auth::user()->id)->where('item_id', '=', $item->id)->first())) {
//remove from favorites button will show
}
}
Vous devez vous connecter pour publier un commentaire.
Vous souhaitez peut-être quelque chose comme ceci:
if (is_null($user)) {
effectivement êtreif (is_null($user_favorites)) {
$user_favorites
, comment voulez-vous vérifier si une colonne est null ou pas? Par exemple$user_favorites->date
Je vous conseille d'utiliser
exists()
oucount()
de vérifier, de ne pas utiliserfirst()
.Le moyen le plus rapide:
Ou:
SQL:
Le plus rapide: seulement select id
SQL:
De la voie normale:
SQL:
->exists()
n'a pas fonctionné pour moi, mais ->count() a travaillé. (l'utilisation de mysql, L 5.2).Laisser
User_favorite
être un modèle qui accède à votreuser_favorites
tableLa façon la plus simple de le faire est d'utiliser
toggle()
méthode de type plusieurs-à-plusieurs relations.par exemple
Il renvoie aussi un tableau qui vous indique si le
ID
est attaché ou détaché en DB.