簡體   English   中英

SQLSTATE [HY000]:常規錯誤:1364字段“ mov_id”沒有默認值

[英]SQLSTATE[HY000]: General error: 1364 Field 'mov_id' doesn't have a default value

有一個與電影類別這兩個表有關的問題

類別屬於電影,這意味着我可以為電影設置多種類別。

所以在類別模型中,我將這段代碼

public function movie(){
    return $this->belongsTo('App\Movie', 'mov_id');
}

我要設置的category.mov_id = movie.id

在控制器部分,當我放空白時,驗證很好,當然會顯示錯誤消息。 但是問題是無法保存到數據庫並且顯示mov_id沒有默認值

public function store(Request $request)
{
    $rules = array(
        'cat_title' => 'required'
    );
    $validator = Validator::make(Input::all(), $rules);

    if ($validator->fails()) {
        return Redirect::to('category/create')
            ->withErrors($validator);
    } else {
        $movie = new Category();
        $movie->cat_title = Input::get('cat_title');
        $movie->save();
        Session::flash('message', 'Successfully created!');
        return Redirect::to('category');
    }
}

最后,這是查看文件

                   <div class="table-container">
                        <form method="POST" action="{{ route('category.store') }}"  role="form">
                            {{ csrf_field() }}
                            <div class="row">
                                <div class="col-xs-12 col-sm-12 col-md-12">
                                    <div class="form-group">
                                        <input type="text" name="cat_title" id="cat_title" class="form-control input-sm" placeholder="分類">
                                    </div>
                                </div>
                            </div>
                            <div class="row">
                                <div class="col-xs-12 col-sm-12 col-md-12">
                                    <input type="submit"  value="Save" class="btn btn-success btn-block">
                                    <a href="{{ route('category.index') }}" class="btn btn-info btn-block" >Back</a>
                                </div>

                            </div>
                        </form>
                    </div>

類別架構

        Schema::create('category', function (Blueprint $table) {
        $table->increments('id');
        $table->string('cat_title');
        $table->integer('mov_id');
        $table->timestamps();
    });

錯誤消息的圖像:- 在此處輸入圖片說明

錯誤消息會告訴您確切的問題是什么。 您正在嘗試插入類別記錄,但是您的表單不包含mov_id值。 您的架構指定mov_id為整數,但不指定任何默認值,也不能為null。 因此,如果您不告知Laravel,則不知道將其用於mov_id ,因此它無法創建記錄。

快速解決方案是更新您的架構以允許 mov_id空值

$table->integer('mov_id')->nullable();

但是我認為您將會遇到更大的問題。 一個類別可能根本不應該有電影ID-這意味着每個類別最多只能有1個電影。

我認為您真正想要的是電影和類別之間的多對多關系。 這意味着一部電影可以具有多個類別,並且一個類別可以分配給許多電影。

Laravel文檔對此進行了很好的描述,並提供了一個示例 您需要更新您的Laravel關系:

// Category model
public function movie() {
    return $this->belongsToMany('App\Movie');
}

// Movie model
public function category() {
    return $this->belongsToMany('App\Category');
}

和您的架構:

Schema::create('movies', function (Blueprint $table) {
    $table->increments('id');
    $table->string('title');
    // ... etc
});

Schema::create('categories', function (Blueprint $table) {
    $table->increments('id');
    $table->string('cat_title');
    // ... etc
});

Schema::create('category_movie', function (Blueprint $table) {
    $table->integer('category_id');
    $table->integer('movie_id');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM