

現在laravelでタスクリストを作ってます。  
user_idカラムを追加しましたが、下記エラーが出ます。  
考えられる原因を教えてもらいたいです。  
ソースコードはどのソースコードを載せればいいのかわからないです。  
よろしくお願いします。

[code]

    SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value (SQL: insert into `tasks` (`status`, `content`, `updated_at`, `created_at`)
    
[/code]

Task.php

[code]

    <?php
    namespace App;
    use Illuminate\Database\Eloquent\Model;
    
    class Task extends Model
    {
        protected $fillable = ['content', 'status', 'user_id'];
    
        public function user()
        {
            return $this->belongsTo(User::class);
        }
    }
    
[/code]

TasksController

[code]

    <?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use App\Task;
    
    class TasksController extends Controller
    {
        /**
         * Display a listing of the resource.
         *
         * @return \Illuminate\Http\Response
         */
        public function index()
        {
            $data = [];
            if (\Auth::check()) {
                $user = \Auth::user();
                $tasks = $user->tasks()->orderBy('created_at', 'desc')>paginate(10);
    
                $data = [
                    'user' => $user,
                    'tasks' => $tasks,
                ];
    
                return view('tasks.index', [
                    'tasks' => $tasks,
                ]);
    
            } else {
                return view('welcome');    
            }
    
        }
    
        /**
         * Show the form for creating a new resource.
         *
         * @return \Illuminate\Http\Response
         */
        public function create()
        {
            $task = new Task;
    
            return view('tasks.create', [
                'task' => $task,
            ]);
        }
    
        /**
         * Store a newly created resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @return \Illuminate\Http\Response
         */
        public function store(Request $request)
        {
    
            $this->validate($request, [
                'status' => 'required|max:10',
                'content' => 'required|max:191',
            ]);
    
            $task = new Task;
            $task->status = $request->status;
            $task->content = $request->content;
            $task->save();
    
            return redirect('/');
        }
    
        /**
         * Display the specified resource.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function show($id)
        {
            $task = Task::find($id);
    
            return view('tasks.show', [
                'task' => $task,
            ]);
        }
    
        /**
         * Show the form for editing the specified resource.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function edit($id)
        {
            $task = Task::find($id);
    
            return view('tasks.edit', [
                'task' => $task,
            ]);
        }
    
        /**
         * Update the specified resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function update(Request $request, $id)
        {
    
            $this->validate($request, [
                'status' => 'required|max:10',
                'content' => 'required|max:191',
            ]);
    
            $task = Task::find($id);
            $task->status = $request->status;
            $task->content = $request->content;
            $task->save();
    
            return redirect('/');
        }
    
        /**
         * Remove the specified resource from storage.
         *
         * @param  int  $id
         * @return \Illuminate\Http\Response
         */
        public function destroy($id)
        {
            $task = Task::find($id);
            $task->delete();
    
            return redirect('/');
        }
    }
    
[/code]


CC BY-SA 4.0
2020-01-01T07:45:40.067
61923
2022-01-18T15:08:40.920
2020-01-05T04:35:43.133
32986
37276
question
laravel
laravel sql エラー: SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value


エラーを見る限りは user_id が not null (NULL価を許容しない)カラム  
で default 価もないのに価がセットされてないのでエラーになってるんだと思います

修正方法は user_id というのが null を許容するのかどうかに依存します

許容するならマイグレーションで null 値を許容する修正マイグレーションをうちます

許容しないなら laravel 内のコードでモデル作製時に user_id を渡す必要があります


CC BY-SA 4.0
2020-01-01T10:00:12.850
61925
2020-01-01T10:00:12.850
61923
answer