0

我有一个 SQL 问题。我不明白我错在哪里。我已经创建了一组类似的文件并且有效。在这个组中,它告诉我label_winner不存在。但是我产生了winner_label迁移,因为它反转了?

错误

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();
        });
    }

移民纪律_winner

  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();
      });

赢家控制器

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');
    }
4

2 回答 2

0

我发现错误是由此产生的

<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>

于 2018-12-19T21:43:25.413 回答
0

问题出在Winner_label 表的模型中。当您运行查询时,laravel 从模型中获取表的名称。您应该使用正确的语法调用模型。另一种方法是在参考模型中设置表名。

protected $table = 'winner_label';
于 2018-12-19T13:55:06.093 回答