سلام
دوستان چطور میتونیم برای دستور زیر بجای مقادیر ثابت عددی ، مقدار یک ستون دیگر از همان جدول رو قرارا دهیم :
$users = DB::table('users')->whereNotBetween('votes', [1, 100])->get();
فرض کنید در جدول فرضی من دو تا ستون با نامهای LowLimit و HighLimit دارم که حدود بالا پائین رو نگهداری میکنه ، حالا یک ستون هم دارم که مقدار لحظه ای رو در خودش جای داده و اسم فرضی ای اون هم CurrentValue هستش ، میخوام چک کنم ببینم آیا مقدار لحظه ای در محدوده مجاز هست یا خیر ، یا بعبارتی اونهایی که مقدار فعلی یا لحظه ای شون خارج از محدوده مجاز بود به عنوان ارور محسوب میشن و انتخاب کنم.
خب لاراول برای اینکار تابع جذاب whereNotBetween رو معرفی کرده ولی مشکل اینجاست که چطور بجای 1 و 100 ثابت همون مقدار ستون حد پائین و بجای 100 هم مقدار ستون حد بالا رو قرار بدم
ممنون میشم دوستانی که مطلع هستن راهنمایی کنن
با سپاس
@drcode.ir عزیز بله
از همون جدول جاری ، چون ستونهای حد بالا و پائین و ستون مقدار لحظه ای هر سه در یک جدول هستن
منظورم من با شبه کد زیر شاید بهتر مشخص بشه :
SELECT * FROM sensors WHERE currentValue < sensors.LowLimit OR currentValue>sensors.HighLimit
البته دوست دارم با متدهای خود لاراول اینکارو انجام بدم ولی اگر چنین امکانی رو نمیشه با خود لاراول اجرا کرد با استفاده از SQL چطور میشه اینکارو انجام داد.
البته روش ساده ای از SQL رو انجام دادم ولی احساس میکنم سربار اضافی حافظه ای داره و غیر استاندارد هست
لطفا روش استانداردشو اگر مطلع هستید بفرمائید
ممنون
DB::table('sensors')->whereRaw('CurrentValue<LowLimit OR CurrentValue>HighLimit')->get();
و یا
DB::table('sensors')->whereRaw('CurrentValue NOT BETWEEN LowLimit AND HighLimit')->get();
می تونید استفاده کنید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟