DBにデータを追加する機能を実装しようとしているのですが、以下のようなエラーが出ます。
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'professor' in 'field list' (SQL: insert into `lab_evaluation` (`professor`, `employment`, `atmosphere`, `facility`, `skill`, `add_time`, `updated_at`, `created_at`) values (3, 2, 3, 4, 4, 2020/07/12, 2020-07-12 14:20:12, 2020-07-12 14:20:12))
しかし、以下のようにデータベースにはきちんとカラムを定義しているつもりです。
どこで不具合が生じているか分かるかたはいらっしゃいますでしょうか。
2020_07_10_061812_create_lab_evaluation_table.php
1<?php 2 3use Illuminate\Database\Migrations\Migration; 4use Illuminate\Database\Schema\Blueprint; 5use Illuminate\Support\Facades\Schema; 6 7class CreateLabEvaluationTable extends Migration 8{ 9 /** 10 * Run the migrations. 11 * 12 * @return void 13 */ 14 public function up() 15 { 16 Schema::create('lab_evaluation', function (Blueprint $table) { 17 $table->id(); 18 $table->double('professor',2,1); 19 $table->double('employment',2,1); 20 $table->double('atmosphere',2,1); 21 $table->double('facility',2,1); 22 $table->double('skill',2,1); 23 $table->date('add_time'); 24 $table->timestamps(); 25 }); 26 } 27 28 /** 29 * Reverse the migrations. 30 * 31 * @return void 32 */ 33 public function down() 34 { 35 Schema::dropIfExists('lab_evaluation'); 36 } 37} 38
データを追加するためのページ
@section('content') <!--Bootstrapの定形コード--> <div class="card-body"> <div class="card-title"> 研究室の評価 </div> </div> <!--バリテーションエラーの表示に使用--> @include('common.errors') <!--end:バリテーションエラーの表示に使用--> <!--研究室の評価の登録フォーム--> <form action="{{ url('/laboratory/{laboratory}') }}" method="POST" class="form-horizontal"> {{ csrf_field() }} <div class="form-groupe"> <div class="col-sm-6"> <label for="professor" class="col-sm-3 control-label">教授の評価</label> <input type="number" step="0.5" name="professor" class="form-control"> </div> </div> <div class="form-groupe"> <div class="col-sm-6"> <label for="employment" class="col-sm-3 control-label">就活で有利</label> <input type="number" step="0.5" name="employment" class="form-control"> </div> </div> <div class="form-groupe"> <div class="col-sm-6"> <label for="atmosphere" class="col-sm-3 control-label">雰囲気</label> <input type="number" step="0.5" name="atmosphere" class="form-control"> </div> </div> <div class="form-groupe"> <div class="col-sm-6"> <label for="facility" class="col-sm-3 control-label">研究室の設備・資金</label> <input type="number" step="0.5" name="facility" class="form-control"> </div> </div> <div class="form-groupe"> <div class="col-sm-6"> <label for="skill" class="col-sm-3 control-label">身に付くスキル・専門性</label> <input type="number" step="0.5" name="skill" class="form-control"> </div> </div> <!--研究室の評価 登録ボタン--> <div class="form-groupe"> <div class="col-offset-3 col-sm-6"> <button type="submit" class="btn btn-primary">送信する</button> </div> </div> </form> <!--現在登録済みの研究室一覧--> @endsection
他にも必要な情報があれば教えてください。
追記
web.php
1<?php 2 3use App\Laboratory; 4use Illuminate\Http\Request; 5 6//エラー表示を適切にするため 7Route::group(['middleware' => ['web']], function () 8{ 9//研究室サイトダッシュボード表示 10Route::get('/', 'LabController@index'); 11 12//研究室の追加 13Route::post('/laboratories', 'LabController@store'); 14 15//研究室の評価追加 16Route::post('/laboratory/{laboratory}', 'LabController@store_evaluation'); 17 18Route::post('/', 'LabController@mv_add'); 19 20//更新画面 21Route::post('/labedit/{laboratories}','LabController@mv_update'); 22 23//更新処理 24Route::post('/laboratories/update', 'LabController@update'); 25 26//削除処理 27Route::delete('/laboratory/{laboratory}', 'LabController@delete'); 28 29Auth::routes(); //認証機能を使用する。 30 31Route::get('/home', 'HomeController@index')->name('home'); 32 33 34//========リンク設定======================================== 35//TO:研究室の情報追加ページ 36Route::get('/add', 'LinkController@to_add'); 37 38//TO:研究室の情報追加ページ 39Route::get('/add_evaluation', 'LinkController@to_add_evaluation'); 40 41//TO:各大学ページ 42Route::get('/univ/{univ_name}','LinkController@to_univ'); 43 44//TO:各研究室ページ 45Route::get('/lab/{lab_details}','LinkController@to_lab_details'); 46}); 47
LabController(該当部のみ)
1 2 public function store_evaluation(Request $request) 3 { 4 $validator = Validator::make($request->all(), [ 5 'professor' => 'required|min:1|max:5', 6 'employment' => 'required|min:1|max:5', 7 'atmosphere' => 'required|min:1|max:5', 8 'facility' => 'required|min:1|max:5', 9 'skill' => 'required|min:1|max:5', 10 ]); 11 12 //バリテーション:エラー 13 if($validator->fails()) { 14 return redirect('/laboratory/{laboratory}') 15 ->withInput() 16 ->withError($validator); 17 } 18 19 //研究室のDBにデータを格納 20 //Eloquentモデル (=MySQL記述なしにデータベース管理をしてくれる) 21 $today = date("Y/m/d"); //現在時刻の取得 22 $lab_evaluation = new lab_evaluation; 23 $lab_evaluation->professor = $request->professor; 24 $lab_evaluation->employment = $request->employment; 25 $lab_evaluation->atmosphere = $request->atmosphere; 26 $lab_evaluation->facility = $request->facility; 27 $lab_evaluation->skill = $request->skill; 28 $lab_evaluation->add_time = $today; 29 $lab_evaluation->save(); 30 return redirect('/laboratory/{laboratory}'); 31 } 32
CREATE文の取得結果
1MariaDB [laboratory]> SHOW CREATE TABLE lab_evaluation; 2+-------------------------------------------------------------------------------------------------------------------------+ 3| Table | Create Table | 4+---------------------------------------------------------------------------------------------------------------------+ 5| lab_evaluation | CREATE TABLE `lab_evaluation` ( 6 `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 7 `created_at` timestamp NULL DEFAULT NULL, 8 `updated_at` timestamp NULL DEFAULT NULL, 9 PRIMARY KEY (`id`) 10) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci | 11+------------------------------------------------------------------------------------------------------+ 121 row in set (0.041 sec) 13 14MariaDB [laboratory]> SHOW CREATE TABLE laboratories; 15+-------+ 16| Table | Create Table | 17+---------------------------------------------------------------------------------------------+ 18| laboratories | CREATE TABLE `laboratories` ( 19 `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 20 `lab_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 21 `lab_univ` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 22 `lab_evaluation` double(2,1) NOT NULL, 23 `add_time` date NOT NULL, 24 `created_at` timestamp NULL DEFAULT NULL, 25 `updated_at` timestamp NULL DEFAULT NULL, 26 PRIMARY KEY (`id`) 27) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci | 28+---------------------------------------------------------------------------------------------------------------------+ 291 row in set (0.004 sec)
回答2件
あなたの回答
tips
プレビュー