راکت
حل شده

ذخیره نشدن اطلاعات در دیتابیس

25 پاسخ

سلام دوستان من میخام سیستم دانلود فایل بعد از پرداخت پیاده سازی کنم

دیتابیس به شکل زیر طراحی کردم ایا غلطه ؟

  public function up()
    {
        Schema::create('files', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

            $table->string('title');
            $table->text('description');
            $table->integer('price');
            $table->string('image');
            $table->string('file');
            $table->string('slug')->unique();
            $table->integer('hit');
            $table->tinyInteger('status');

            $table->integer('inventory')->default(0);
            $table->timestamps();

      });

        Schema::create('category_file' , function(Blueprint $table) {
            $table->unsignedBigInteger('category_id');
            $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
            $table->unsignedBigInteger('file_id');
            $table->foreign('file_id')->references('id')->on('files')->onDelete('cascade');
            $table->primary(['category_id' , 'file_id']);
        });

    }

مدل فایل به شکل زیر


class File extends Model
{
    use Sluggable;

    protected $fillable = [
        'title' , 'slug', 'description' , 'status' ,'price' , 'inventory' , 'image' , 'file'
    ];
    protected $attributes = [
        'hit'=> 1,
    ];
        public function comments()
    {
        return $this->morphMany(Comment::class, 'commentable');
    }

    public function categories()
    {
        return $this->belongsToMany(Category::class);
    }

    public function user() {

        return $this->belongsTo(User::class);
    }

    public function sluggable()
    {
        return [
            'slug' => [
                'source' => ''
            ]
        ];
    }
}

کنترلر به شکل زیر

    public function store(Request $request , File $files)
    {
       $validData = $request->validate([
            'title' => 'required',
            'description' => 'required',
            'image' => 'required',
            'file' => 'required',
            'categories' => 'required',
            'slug' => 'unique:files',
            'status' => ''
        ]);

        if (empty($request->slug)) {
            $slug = SlugService::createSlug(File::class, 'slug', $request->title);
        } else {
            $slug = SlugService::createSlug(File::class, 'slug', $request->slug);
        }
        $request->merge(['slug' => $slug]);

        $files = Storage::disk('public')->putFileAs('files' , $request->file('file') , $request->file('file')->getClientOriginalName())->create($request->all());
        $files->categories()->sync($validData['categories']);

        alert()->success('مطلب مورد نظر با موفقیت ثبت شد' , 'با تشکر');

        return redirect(route('admin.files.index'));
    }

بلید هم به شکل زیر

@component('admin.layouts.content' , ['title' => 'ایجاد فایل'])
    @slot('breadcrumb')
        <li class="breadcrumb-item"><a href="https://roocket.ir/admin">پنل مدیریت</a></li>
        <li class="breadcrumb-item"><a href="https://roocket.ir/{{ route('admin.files.index') }}">لیست فایل</a></li>
        <li class="breadcrumb-item active">ایجاد فایل</li>
    @endslot

    @slot('script')

        <script src="/js/ckeditor/ckeditor.js"></script>
        <script>

            CKEDITOR.replace('description', { filebrowserImageBrowseUrl: '/file-manager/ckeditor' });

            document.addEventListener("DOMContentLoaded", function() {

                document.getElementById('button-image').addEventListener('click', (event) => {
                    event.preventDefault();

                    inputId = 'image_label';
                    window.open('/file-manager/fm-button', 'fm', 'width=1400,height=800');
                });

                document.getElementById('button-file').addEventListener('click', (event) => {
                    event.preventDefault();

                    inputId = 'file_label';
                    window.open('/file-manager/fm-button', 'fm2', 'width=1400,height=800');
                });
            });

            // set file link
            let inputId = '';

            function fmSetLink($url) {
                document.getElementById(inputId).value = $url;
            }

            $('#categories').select2({
                'placeholder' : 'دسترسی مورد نظر را انتخاب کنید'
            })

        </script>
    @endslot

    <div class="row">
        <div class="col-lg-12">
            @include('admin.layouts.errors')
            <div class="card">
                <div class="card-header">
                    <h3 class="card-title">فرم ایجاد فایل</h3>
                </div>
                <!-- /.card-header -->
                <!-- form start -->

                <form class="form-horizontal" action="{{ route('admin.files.store') }}" method="POST" enctype="multipart/form-data">
                    @csrf

                    <div class="card-body">
                        <div class="form-group">
                            <label for="inputEmail3" class="col-sm-2 control-label">نام فایل</label>
                            <input type="text" name="title" class="form-control @error('title') is-invalid @enderror" id="inputEmail3" placeholder="نام فایل را وارد کنید" value="{{ old('title') }}">
                            @error('title')
                            <span class="invalid-feedback" role="alert">
                                <strong>{{ $message }}</strong>
                            </span>
                            @enderror
                        </div>
                        <div class="form-group">
                            <label for="title" >نام مستعار :</label>
                            <div class="input-group">
                                <input type="text" class="form-control @error('slug') is-invalid @enderror" name="slug" value="{{old('slug')}}">
                            </div>
                            @error('slug')
                            <span class="invalid-feedback" role="alert">
                                <strong>{{ $message }}</strong>
                            </span>
                            @enderror
                        </div>

                        <div class="form-group">
                            <label for="description" class="col-sm-2 control-label">توضیحات</label>
                            <textarea class="form-control" name="description" id="description" cols="30" rows="10" style="min-height: 300px">{{ old('description') }}</textarea>
                        </div>

                        <div class="form-group">
                            <label for="title" > وضعیت : </label>
                            <div class="input-group">
                                <select class="form-control" name="status" >
                                    <option value="0">منتشر نشده</option>
                                    <option value="1">منتشر شده</option>
                                </select>
                            </div>
                        </div>

                        <div class="form-group">
                            <label for="inputPassword3" class="col-sm-2 control-label">قیمت</label>
                            <input type="number" name="price" class="form-control @error('price') is-invalid @enderror" id="inputPassword3" placeholder="قیمت را وارد کنید" value="{{ old('price') }}">
                            @error('price')
                            <span class="invalid-feedback" role="alert">
                                <strong>{{ $message }}</strong>
                            </span>
                            @enderror
                        </div>
                        <div class="form-group">
                            <label for="inputPassword3" class="col-sm-2 control-label">موجودی</label>
                            <input type="number" name="inventory" class="form-control @error('inventory') is-invalid @enderror" id="inputPassword3" placeholder="موجودی را وارد کنید" value="{{ old('inventory') }}">
                            @error('inventory')
                            <span class="invalid-feedback" role="alert">
                                <strong>{{ $message }}</strong>
                            </span>
                            @enderror
                        </div>
                        <div class="form-group">
                            <label class="col-sm-2 control-label">آپلود تصویر شاخص</label>
                            <div class="input-group">
                                <input type="text" id="image_label" class="form-control" name="image">
                                <div class="input-group-append">
                                    <button class="btn btn-outline-secondary" type="button" id="button-image">انتخاب</button>
                                </div>
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="col-sm-2 control-label">آپلود فایل</label>
                            <div class="input-group">
                                <input type="text" id="file_label" class="form-control" name="file">
                                <div class="input-group-append">
                                    <button class="btn btn-outline-secondary" type="button" id="button-file">انتخاب</button>
                                </div>
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="inputEmail3" class="col-sm-2 control-label">دسته بندی ها</label>
                            <select class="form-control" name="categories[]" id="categories" multiple>
                                @foreach(\Modules\Category\Entities\Category::all() as $category)
                                    <option value="{{ $category->id }}">{{ $category->name }}</option>
                                @endforeach
                            </select>
                        </div>

                    </div>
                    <!-- /.card-body -->
                    <div class="card-footer">
                        <button type="submit" class="btn btn-info">ثبت فایل</button>
                        <a href="https://roocket.ir/{{ route('admin.files.index') }}" class="btn btn-default float-left">لغو</a>
                    </div>
                    <!-- /.card-footer -->
                </form>
            </div>
        </div>
    </div>

@endcomponent

لطفا راهنمایی کنید کدوم قسمت مشکل داره نمیتونم اطلاعات تو دیتابیس ذخیره کنم

paradox
paradox
@wxyz4367
ثبت پرسش جدید

پاسخ‌ها

25
سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

بهترین پاسخ

به این شکل بنویسید.

                <form class="form-horizontal" action="{{ route('admin.files.update' , 'files'/* اسم پرامتر شما که در روت مشخص کردید */ =>$files->id) }}" method="POST" enctype="multipart/form-data">

@wxyz4367

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

سلام نحوه ارسال پارامتر به روت اشتباه است باید به این شکل باشد.

 route('admin.files.update' , ['files' => $files->id ])

@wxyz4367

paradox
paradox
@wxyz4367

@websaz
قبلا تست کردم ولی این ارور میده بازهم

Missing required parameters for [Route: admin.files.update] [URI: admin/files/{file}]. (View: C:\xampp\htdocs\laravelpro\Modules\File\Resources\views\admin\files\edit.blade.php)
http://localhost:8000/admin/files/5/edit

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

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

شما اسم پامتر رو file گذاشتید پس باید به این شکل بنویسید.

 route('admin.files.update' , ['file' => $files->id ])

@wxyz4367

paradox
paradox
@wxyz4367

@websaz
هم file گذاشتم هم files اصلا هرچی میزارم همون ارور قبل نمایش میده 😔

صفحه 2 از 2

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

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