回答

收藏

检查行是否存在,Laravel

技术问答 技术问答 253 人阅读 | 0 人回复 | 2023-09-14

我具有以下数据库结构:
& v' M+ V, N" _items:
2 z$ T! j3 I# v9 ?7 Nid, name, user_id( n( }7 M# V6 \
users table:
  }6 ?; P# c$ X' Qid, name
3 W2 h1 [5 ~# duser_favorites table:+ _" z1 l! q9 \
id, user_id, item_id  B, t- w4 P, G% ?- e1 U( g
在我的项目永久链接页面上,我有一个“添加到收藏夹”按钮,可在其中插入新行 user_favorites: R/ X/ j* S, L/ N6 a. Q& B1 O
如果用户已经在收藏夹中将其替换为“从收藏夹中删除”按钮,我希望能够将其替换。
' s3 d% ?; R" ]( J  J% _我无法弄清楚其背后的逻辑-是否需要检查其中是否存在user_favorites具有当前用户ID和永久链接ID的行?这对我不起作用:. x, {  N0 d8 Y" l6 w# N
if (Auth::user()->id) {/ O' ~' h* m& o( L
    if (!is_null(DB::table('user_favorites')->where('user_id', '=', Auth::user()->id)->where('item_id', '=', $item->id)->first())) {
5 a8 g. O5 z# c( H* P' m        // remove from favorites button will show' g* Y5 C% _3 ^* p) r' i1 T+ H
    }0 o( P3 |6 r1 `+ C
}4 f% M& v) |1 S5 r: P* u+ g
               
6 l* o4 i/ y+ ^- Y解决方案:
: C# _" x; ?9 I2 L5 s                * s2 y, _0 f3 B% |

: T5 Y( V2 A7 U; ~* O2 u3 s) v2 _( J; {$ B& W0 T" h) y& N7 L
                您可能想要这样的东西:3 s' X. ]% y5 J6 ]
$user_favorites = DB::table('user_favorites')1 u* v5 j; V, C) t' o) g# Y
    ->where('user_id', '=', Auth::user()->id)7 O& M3 w0 S& t/ r
    ->where('item_id', '=', $item->id)
% u0 w4 {1 i5 j8 W5 t    ->first();
7 K: {) Z8 Y: A8 Fif (is_null($user_favorites)) {/ b3 }8 I: w% d) c3 D# G0 W2 Z% K
    // It does not exist - add to favorites button will show: J+ Z0 `2 v6 v& l2 Y- o4 I
} else {
" L4 \% k" g% m3 U2 G    // It exists - remove from favorites button will show& e: _/ q; B: h# S8 K2 g. X: t6 Z
}
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则