База данных Laravel sql - PullRequest
       27

База данных Laravel sql

0 голосов
/ 19 декабря 2018

У меня проблема с SQL.Я не понимаю, где я не прав.Я создал группу похожих файлов, и это работает.В этой группе он говорит мне, что label_winner не существует.Но я сгенерировал winner_label миграцию, потому что она инвертирует?

Error

Illuminate \ Database \ QueryException (42S02)

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'canoa.label_winner' doesn't exist (SQL: insert into `label_winner` (`created_at`, `label_id`, `updated_at`, `winner_id`) values (2018-12-18 23:41:09, 3, 2018-12-18 23:41:09, 3))

Миграция winner_label

public function up()
    {
        Schema::create('winner_label', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('winner_id');
            $table->integer('label_id');
            $table->timestamps();
        });
    }

Миграция дисциплина_виннер

  public function up()
    {
        Schema::create('discipline_winner', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('winner_id');
            $table->integer('discipline_id');
            $table->timestamps();
        });
    }

Победитель миграции

public function up()
    {
        Schema::create('winners', function (Blueprint $table) {
          $table->increments('id');
          $table->integer('user_id')->unsigned();
          $table->string('title');
          $table->string('slug')->unique();
          $table->string('image')->default('default.png');
          $table->text('body');
          $table->integer('view_count')->default(0);
          $table->boolean('status')->default(false);
          $table->boolean('is_approved')->default(false);
          $table->foreign('user_id')
            ->references('id')->on('users')
            ->onDelete('cascade');
          $table->timestamps();
      });

WinnerController

public function store(Request $request)
    {
      $this->validate($request,[
          'title' => 'required|unique:winners',
          'image' => 'image',
          'disciplines' => 'required',
          //'labels' => 'required',
          'body' => 'required',
      ]);
      $image = $request->file('image');
      $slug = str_slug($request->title);
      if(isset($image))
      {
//            make unipue name for image
          $currentDate = Carbon::now()->toDateString();
          $imageName  = $slug.'-'.$currentDate.'-'.uniqid().'.'.$image->getClientOriginalExtension();
          if(!Storage::disk('public')->exists('winner'))
          {
              Storage::disk('public')->makeDirectory('winner');
          }
          $winnerImage = Image::make($image)->resize(1600,1066)->stream();
          Storage::disk('public')->put('winner/'.$imageName,$winnerImage);
      } else {
          $imageName = "default.png";
      }
      $winner = new Winner();
      $winner->user_id = Auth::id();
      $winner->title = $request->title;
      $winner->slug = $slug;
      $winner->image = $imageName;
      $winner->body = $request->body;
      if(isset($request->status))
      {
          $winner->status = true;
      }else {
          $winner->status = false;
      }
      $winner->is_approved = true;
      $winner->save();
      $winner->disciplines()->attach($request->disciplines);
      $winner->labels()->attach($request->labels);

      Toastr::success('Post Successfully Saved :)','Success');
      return redirect()->route('admin.winner.index');
    }

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Я обнаружил, что ошибка генерируется этим

<div class="form-group">
  <label>Select Labels</label>
  <select class="form-control select2" name="labels[]" id="label" data-live-search="true" multiple="multiple">
    @foreach($labels as $label)
    <option value="{{ $label->id }}">{{ $label->name }}</option>
    @endforeach
  </select>
</div>
0 голосов
/ 19 декабря 2018

Проблема в модели таблицы Winner_label.Когда вы запускаете запрос, laravel получает имя таблицы из модели.Вы должны назвать модель с правильным синтаксисом.Альтернативой является указание имени таблицы в эталонной модели.

protected $table = 'winner_label';
...