مهدی
6 سال پیش توسط مهدی مطرح شد
3 پاسخ

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

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

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

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


ثبت پرسش جدید
محمد صادقیان
تخصص : برنامه نویس وب - فریم ورک Lara...
@drcode.ir 6 سال پیش مطرح شد
0

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


مهدی
@mehdi13 6 سال پیش آپدیت شد
0

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

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

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

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


محمد صادقیان
تخصص : برنامه نویس وب - فریم ورک Lara...
@drcode.ir 6 سال پیش آپدیت شد
0
DB::table('sensors')->whereRaw('CurrentValue<LowLimit OR CurrentValue>HighLimit')->get();

و یا

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

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


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

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