راکت

متد whereNotBetween در لاراول

3 پاسخ

سلام
دوستان چطور میتونیم برای دستور زیر بجای مقادیر ثابت عددی ، مقدار یک ستون دیگر از همان جدول رو قرارا دهیم :
$users = DB::table('users')->whereNotBetween('votes', [1, 100])->get();

فرض کنید در جدول فرضی من دو تا ستون با نامهای LowLimit و HighLimit دارم که حدود بالا پائین رو نگهداری میکنه ، حالا یک ستون هم دارم که مقدار لحظه ای رو در خودش جای داده و اسم فرضی ای اون هم CurrentValue هستش ، میخوام چک کنم ببینم آیا مقدار لحظه ای در محدوده مجاز هست یا خیر ، یا بعبارتی اونهایی که مقدار فعلی یا لحظه ای شون خارج از محدوده مجاز بود به عنوان ارور محسوب میشن و انتخاب کنم.
خب لاراول برای اینکار تابع جذاب whereNotBetween رو معرفی کرده ولی مشکل اینجاست که چطور بجای 1 و 100 ثابت همون مقدار ستون حد پائین و بجای 100 هم مقدار ستون حد بالا رو قرار بدم

ممنون میشم دوستانی که مطلع هستن راهنمایی کنن
با سپاس

ثبت پرسش جدید

پاسخ‌ها

3
محمد صادقیان
محمد صادقیان
@drcode.ir

تخصص: برنامه نویس وب - فریم ورک Laravel

منظورتون این هست که مقادیر 1 و 100 رو به صورت داینامیک از جدول بگیرید بزارید اونجا؟

مهدی
مهدی
@mehdi13

@drcode.ir عزیز بله
از همون جدول جاری ، چون ستونهای حد بالا و پائین و ستون مقدار لحظه ای هر سه در یک جدول هستن

منظورم من با شبه کد زیر شاید بهتر مشخص بشه :

SELECT * FROM sensors WHERE currentValue < sensors.LowLimit OR currentValue>sensors.HighLimit

البته دوست دارم با متدهای خود لاراول اینکارو انجام بدم ولی اگر چنین امکانی رو نمیشه با خود لاراول اجرا کرد با استفاده از SQL چطور میشه اینکارو انجام داد.
البته روش ساده ای از SQL رو انجام دادم ولی احساس میکنم سربار اضافی حافظه ای داره و غیر استاندارد هست
لطفا روش استانداردشو اگر مطلع هستید بفرمائید
ممنون

شاید پاسخ شما همین‌جا باشد

محمد صادقیان
محمد صادقیان
@drcode.ir

تخصص: برنامه نویس وب - فریم ورک Laravel

DB::table('sensors')->whereRaw('CurrentValue<LowLimit OR CurrentValue>HighLimit')->get();

و یا

DB::table('sensors')->whereRaw('CurrentValue NOT BETWEEN LowLimit AND HighLimit')->get();

می تونید استفاده کنید.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام