環境
Laravel 5.8
Windows
MySQL
エラー内容
Illuminate \ Database \ QueryException (42S22)
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user_id' in 'field list' (SQL: insert into players
(name
, money
, user_id
, updated_at
, created_at
) values (test, 10000, 1, 2020-03-16 19:14:41, 2020-03-16 19:14:41))
Previous exceptions
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user_id' in 'field list' (42S22)
###試したこと
データベースを新規作成
テーブルを新規作成
プロジェクトを新規作成
キャッシュクリア
###個人的見解
一番最初、aプロジェクトで上記のエラーが出ました。
aプロジェクトではuser_idカラムを使っていました。ネットを見るとMySQLの問題であることがわかりuser_idカラムがないテーブルの新規作成などをしましたが問題解決はしませんでした。どこかにキャッシュが残っているのかと思い、キャッシュクリアをしてもダメでした。
そこでcプロジェクトを新規作成して、同時に新しいデータベース、ユーザー、テーブルを作りました。もちろんenvファイルは新しいDB、ユーザーに対応するように編集しました。ですが、また上記のエラーが出ました。
個人的意見としては、ソースコードの問題ではなく、MySQLの問題だと思っています。
下記に、一応ソースコードを載せておきます。
コード
//D:\c\database\migrations\2020_03_16_190902_create_players_table.php <?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreatePlayersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('players', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->integer('money'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('players'); } }
//D:\c\app\Player.php <?php namespace App; use Illuminate\Database\Eloquent\Model; class Player extends Model { protected $fillable = [ 'name', 'money', ]; }
//D:\c\app\User.php <?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ]; public function player(){ return $this->hasOne('App\Player'); } }
//D:\c\app\Http\Controllers\Auth\RegisterController.php <?php namespace App\Http\Controllers\Auth; use App\User; use App\Player; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; use Illuminate\Foundation\Auth\RegistersUsers; class RegisterController extends Controller { /* |-------------------------------------------------------------------------- | Register Controller |-------------------------------------------------------------------------- | | This controller handles the registration of new users as well as their | validation and creation. By default this controller uses a trait to | provide this functionality without requiring any additional code. | */ use RegistersUsers; /** * Where to redirect users after registration. * * @var string */ protected $redirectTo = '/home'; /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('guest'); } /** * Get a validator for an incoming registration request. * * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ protected function validator(array $data) { return Validator::make($data, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); } /** * Create a new user instance after a valid registration. * * @param array $data * @return \App\User */ protected function create(array $data) { $user = User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), ]); $user->player()->create([ 'name' => $data['name'], 'money' => 10000, ]); return $user; } }
MySQL
1playersテーブル 2+------------+---------------------+------+-----+---------+----------------+ 3| Field | Type | Null | Key | Default | Extra | 4+------------+---------------------+------+-----+---------+----------------+ 5| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment | 6| name | varchar(255) | NO | | NULL | | 7| money | int(11) | NO | | NULL | | 8| created_at | timestamp | YES | | NULL | | 9| updated_at | timestamp | YES | | NULL | | 10+------------+---------------------+------+-----+---------+----------------+
回答1件
あなたの回答
tips
プレビュー