Ali
3 سال پیش توسط Ali مطرح شد
5 پاسخ

خالی بجای null

سلام و وقت بخیر.
دوستان مثلا اینپوت خالی وقتی برمیگرده و ذخیره میکنم بجای اینکه null بشه خالی ذخیره میکنه.
و این مشکل unique بودن یوزرنیم اینارو بهم میریزه.

بعد این مورد توی لوکالم اوکیه و null ثبت میشه. ولی روی هاست مشکل داره

لاراول ورژن 8 - php 8

یجوری که من هر شرط isnull نوشتم دیگه کار نمیکنه و باید empty() بذارم.
اینو ممنون میشم راهنمایی کنید دلیل این تفاوت چیه در لوکال و هاست.

@rezajahangir @mhyeganeh @juza66 @intellect.circle @hesammousavi @ali.bayat


ثبت پرسش جدید
محمد رستمی
تخصص : طراح و برنامه نویس وب
@mohammadphp 3 سال پیش مطرح شد
0

سلام اینو به کدت اضافه کن ببین کار میکنه

foreach($request as $val){
if ($val ===null){
$val = null
}
}

تست نکردم


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش آپدیت شد
2

اول از همه لازمه بدونیم که بصورت پیش فرض باید همین اتفاق بیفته. یعنی اگر input خالی بود باید بجای null یک رشته empty ثبت بشه.

اما لاراول یک Middleware داره بنام ConvertEmptyStringsToNull که بصورت اتومات روی تمامی درخواست ها اجرا میشه و و همون طور که از اسمش مشخصه عبارات خالی رو به null تبدیل می‌کنه.

اگر وارد فایل app/Http/Kernel.php بشید زیرمجموعه property با عنوان middleware$ باید چنین آدرسی رو مشاهده کنید:

\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class

پس اگر نبود یا کامنت شده بود باید اضافه اش کنید تا مشکلتون برطرف بشه.

قضیه بعدی هم اینکه چک کنید آیا ساختار دیتابیس و جدول مورد نظرتون در نسخه لوکال و production با هم یکسان هستند یا نه. به خصوص اینکه آیا اون ستون خاص nullable تعریف شده یا نه و مقدار default شون آیا بروی null تعریف شده یا نه.


@mohammadphp
متوجه منظورتون از این عبارت نمیشم و کمی عجیب به نظرم میرسه:

if ($val ===null){
    $val = null
}

میشه بیشتر توضیح بدید و یک مثال بزنید که قرار هست این کد چه کاری انجام بده دقیقا؟


Ali
@ali200316 3 سال پیش مطرح شد
0

ممنون از شما، بله توی میدلور ها فعاله
توضیح تصویر رو وارد کنید

و دیتابیسم اوکیه هم مقدار پیشفرض و هم خود null بودن
توضیح تصویر رو وارد کنید

@mhyeganeh


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

طبق تجربه چندنفر دیگه در اینجا، یک دلیل دیگرش میتونه میدلور های کاستومی باشه که خودتون اضافه کردید. تک به تک غیرفعالشون کنید تا ببینید آیا نتیجه عوض میشه یا نه...
یا مثلا یکبار یک نسخه fresh لاراول رو نصب کنید و مجدد امتحان کنید.


Ali
@ali200316 3 سال پیش مطرح شد
0

یکدنیا ممنون. حتما بررسی میکنم
یه چیزی که خیلی تعجب میکنم اینه که روی لوکال هیچ مشکلی نداره. و فقط روی هاست این مشکل رو داره.

@mhyeganeh


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

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