Armin Rahmati
4 سال پیش توسط Armin Rahmati مطرح شد
1 پاسخ

آپلود تصویر

سلام دوستان.
من میخوام اطلاعات یک ملک رو ثبت کنم و تمام قسمت ها وارد دیتابیس میشه ولی فقط عکس مشکل داره. وقتی عکس وارد میکنم عکس وارد دیتابیس میشه ولی وقتی قسمت عکس رو خالی میذارم فیلد images داخل جدول هیچی داخلش نوشته نمیشه با اینکه داخل migration هم به صورت nullable تعریف کردم.
ممنون میشم راهنمایی کنید.

migration

Schema::create('estates', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');
            $table->text('images')->nullable();
            $table->string('estateType');
            $table->string('type');
            $table->string('title');
            $table->text('description');
            $table->string('city');
            $table->text('address');
            $table->integer('area');
            $table->string('price')->default(0);
            $table->string('rent')->default(0);
            $table->string('deposit')->default(0);
            $table->integer('roomCount')->default(0);
            $table->string('year');
            $table->integer('floor')->default(0);
            $table->boolean('elevator')->default(0);
            $table->boolean('parking')->default(0);
            $table->boolean('depot')->default(0);
            $table->string('slug');
            $table->timestamps();
        });

model

protected $fillable = ['user_id', 'estateType', 'type', 'title', 'description', 'city', 'address', 'area', 'price', 'rent',
        'deposit', 'roomCount', 'year', 'floor', 'elevator', 'parking', 'depot', 'slug' , 'images'
    ];

controller

public function Store(Request $request)
    {

        $destinationPath = 'uploads/avatars';
        $images = array();
        if ($files = $request->file('images')) {
            foreach ($files as $file) {
                $filename = $file->getClientOriginalName();
                $file->move($destinationPath, $filename);
                $images[] = $filename;
            }
        }
        $allImages = implode("|", $images);
        if ($request->input('estateType') == 'apartment' && $request->input('type') == 'sell' ||
            $request->input('estateType') == 'office' && $request->input('type') == 'sell'
        ) {
            if ($request->input('rent') == null && $request->input('deposit') == null) {
                Estate::create([
                    'user_id' => Auth::user()->id,
                    'images' => $allImages,
                    'estateType' => $request->estateType,
                    'type' => $request->type,
                    'title' => $request->title,
                    'description' => $request->description,
                    'city' => $request->city,
                    'address' => $request->address,
                    'area' => $request->area,
                    'price' => $request->price,
                    'roomCount' => $request->roomCount,
                    'year' => $request->year,
                    'floor' => $request->floor,
                    'elevator' => $request->elevator,
                    'parking' => $request->parking,
                    'depot' => $request->depot,
                ]);
            }
            return redirect('/UserPanel');
        }
    }

view

 <input type="file" class="custom-file-input get-img " name="images[]" accept="image/jpeg" id="get-img" multiple>

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

و وقتی برای ملک عکس انتخاب نمیکنم به صورت زیر پر میشود که اشتباه است و طبق migration باید null قرار گیرد که این اتفاق نمی افتد.
توضیح تصویر رو وارد کنید


ثبت پرسش جدید
HRH
تخصص : back-end developer , switching...
@h.r.hassani 4 سال پیش مطرح شد
0

@arminrahmati999
سلام
توی مایگرشن باید مقدار image رو به طور پیشفرض برابر null بذارید تا کار کنه

$table->text('images')->nullable()->default(null);

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

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