Panic Dev
1.1K subscribers
123 photos
29 videos
2 files
132 links
Panic Dev; your Panic's solution 🔥

🍿 Telegram
🔰 t.iss.one/PanicDev

🍿 Laravel Community
🔰 t.iss.one/LaravelGroups

😇 Contact Me
🔰 t.iss.one/MentionHex

Thanks for sharing us 💛
Download Telegram
امشب داشتم یک سلکت‌باکس با قابلیت سرچ رو می‌نوشتم که روی 3 تا ستون از یک جدول سرچ میزد
ستون های mobile, email, username و لازم بود که زمانی که ادمین داره سرچ میزنه؛ اولین ستونی که مقدار دهی شده بود به عنوان خروجی به صورت key, value برگشت داده بشه
چالشی که اینجا وجود داشت این بود که احتمال null بودن هر یک از این ستون ها وجود داشت و من توی خروجی نمی‌تونستم به قطعیت بگم که کدوم فیلد رو باید به عنوان label برای اون سلکت‌باکس نشون بدم
بعد از کمی سرچ زدن به یه تابع ساده و کاربردی توی MySQL رسیدم به نام COALESCE که خیلی ساده میتونید از بین n تا ستون؛ اولین ستونی که مقدار داره رو برگردونید

پس به این صورت ازش استفاده کردم
user()
->selectRaw("COALESCE(mobile, email, username) as contact, id")
->where('mobile', 'like', "%$search%")
->orWhere('email', 'like', "%$search%")
->orWhere('username', 'like', "%$search%")
->limit(10)
->get()
->pluck('contact', 'id')

قطعه کد بالا توی جدول users روی سه ستون mobile و email و username سرچ میزنه و به ترتیب اولین ستونی که مقدار داشته باشه رو به عنوان contact بهمون برمیگردونه

🎉 #Query #MySQL #Eloquent #Trick

@PanicDev
👍204