File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/app/Models/SavedItem.php
Back
<?php /** * SavedItem Model (Wishlist) * Maps to `saved_items` table */ require_once __DIR__ . '/../Core/Model.php'; class SavedItem extends Model { protected string $table = 'saved_items'; public function getUserWishlist(int $userId): array { $sql = "SELECT si.id as saved_id, si.created_at as saved_at, p.*, s.store_name, s.store_slug, s.status as store_status, c.name as category_name, (SELECT image_path FROM `product_images` pi WHERE pi.product_id = p.id ORDER BY pi.is_main DESC, pi.sort_order ASC LIMIT 1) as gallery_image FROM `saved_items` si JOIN `products` p ON si.product_id = p.id JOIN `stores` s ON p.store_id = s.id LEFT JOIN `categories` c ON p.category_id = c.id WHERE si.user_id = :user_id AND p.deleted_at IS NULL ORDER BY si.created_at DESC"; return $this->fetchAll($sql, [':user_id' => $userId]); } public function isSaved(int $userId, int $productId): bool { $sql = "SELECT id FROM `saved_items` WHERE user_id = :user_id AND product_id = :product_id LIMIT 1"; return (bool)$this->fetchOne($sql, [':user_id' => $userId, ':product_id' => $productId]); } public function add(int $userId, int $productId): bool { $sql = "INSERT IGNORE INTO `saved_items` (`user_id`, `product_id`, `created_at`) VALUES (:user_id, :product_id, NOW())"; $this->query($sql, [':user_id' => $userId, ':product_id' => $productId]); return true; } public function remove(int $userId, int $productId): bool { $sql = "DELETE FROM `saved_items` WHERE user_id = :user_id AND product_id = :product_id"; $this->query($sql, [':user_id' => $userId, ':product_id' => $productId]); return true; } public function toggle(int $userId, int $productId): bool { if ($this->isSaved($userId, $productId)) { $this->remove($userId, $productId); return false; // Removed } else { $this->add($userId, $productId); return true; // Added } } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.25 |
proxy
|
phpinfo
|
Settings