Q&A
問題:管理画面からjob_idに数字を登録しょうとすると連携したuser_idやオリジナルのjob_idがdefault valueとのエラーが出てしまいます、NULLにすればいいですがNULLにすると何も入力されません。
エラー:
SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value (SQL: insert into `jobs` (`updated_at`, `created_at`) values (2017-08-08 12:34:30, 2017-08-08 12:34:30))
どうすれば解決できますでしょうか?誰か教えてくださいませ!!
Jobテーブル:
id | user_id | job_id |created_at | updated_at
説明:job_idは今回エラーが出ているカラムになりますが、Jobテーブルにjob_idを作った理由はjob_idを管理画面からオリジナルJob_idを登録するためです。
Userテーブル:
id | name | created_at | update_at
JobController.php
class JobsController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $jobs = Job::all(); return view('admin.jobs.index', compact('jobs')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $jobs = Job::pluck('job_id')->all(); return view('admin.jobs.index',compact('jobs')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { Job::create($request->all()); return redirect('/admin/jobs/index'); }
index.blade.php
<div class="col-sm-8"> {!! Form::open(['method'=>'POST', 'action'=> 'JobsController@store']) !!} {{ csrf_field() }} <div class="form-group"> {!! Form::label('job_id','Job_ID') !!} {!! Form::text('job_id',['class'=>'form-control']) !!} </div> <div class="form-group"> {!! Form::submit('create Job_id', ['class'=>'btn btn-info']) !!} </div> {!! Form::close() !!}
JobModel:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Job extends Model { protected $fillable = [ 'user_id ', 'job_id', ]; public function user(){ return $this->belongsTo('App\User'); } }
UserModel:
<?php namespace App; use Illuminate\Notifications\Notifiable; 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','address', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; public function jobs(){ return $this->hasMany('App\Job'); } }
回答1件
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
退会済みユーザー
2017/08/08 04:56
2017/08/08 05:01
退会済みユーザー
2017/08/08 05:01
退会済みユーザー
2017/08/08 05:03
2017/08/08 05:11 編集
退会済みユーザー
2017/08/08 05:12
2017/08/08 05:16
2017/08/08 05:27 編集
退会済みユーザー
2017/08/08 05:44
退会済みユーザー
2017/08/08 05:46
2017/08/08 05:50 編集
2017/08/08 05:59
退会済みユーザー
2017/08/08 06:00
2017/08/08 06:09
退会済みユーザー
2017/08/08 06:47
2017/08/08 07:23
退会済みユーザー
2017/08/08 08:58
退会済みユーザー
2017/08/08 09:02
退会済みユーザー
2017/08/08 09:27
退会済みユーザー
2017/08/08 11:07
2017/08/08 12:40