SQLSTATE[23000]:违反完整性约束:1048 列“giorno_raccolta_id”不能为空

如何解决SQLSTATE[23000]:违反完整性约束:1048 列“giorno_raccolta_id”不能为空

Calendar

我正在使用 Laravel 8 开发一个应用程序来显示单独垃圾收集的每周日历,但是当我按下添加日期按钮时,出现以下错误sqlSTATE [23000]: 完整性约束违规:1048 列' giorno_raccolta_id' 不能为空 (sql: insert into notes ( collection_day_id,start_time, end_time,updated_at, created_at) 值 (?,?,2021-05-28 12:48:04,2021-05-28 12:48:04))

  1. Form.blade.PHP

         <div class="input-group mb-3">
         <label class="input-group-text" for="inputGroupSelect01">Giorno</label>
        <select name="giorno" class="form-select" id="inputGroupSelect01">
       @foreach ($days as $day)
        <option value="{{$day->id}}" {{$note->giorno_id == $day->id ? 'selected' : ''}} >{{$day->giorno}}</option>
      @endforeach
    </select>
    </div>
    
     @if($errors->has('giorno'))
      <div class="alert alert-danger" role="alert">
       {{ $errors->first('giorno')}}
      </div>
     @endif
    
      <div class="input-group mb-3">
      <label class="input-group-text" for="inputGroupSelect01">Tipologia</label>
      <select name="tipologia" class="form-select" id="inputGroupSelect01">
       @foreach ($categories as $c)
         <option value="{{$c->id}}" {{$note->tipologia_id == $c->id ? 'selected' : ''}} >{{$c->categoria}}</option>
       @endforeach
     </select>
     </div>
    
    @if($errors->has('tipologia'))
      <div class="alert alert-danger" role="alert">
     {{ $errors->first('tipologia')}}
     </div>
    @endif
    
    <div class="input-group mb-3">
    <label class="input-group-text" for="inputGroupSelect01">Giorno raccolta</label>
    <select name="giorno_raccolta_id" class="form-select" id="inputGroupSelect01">
      @foreach ($days as $day)
         <option value="{{$day->id}}" {{$note->giorno_raccolta_id == $day->id ? 'selected' : ''}} >{{$day->giorno}}</option>
      @endforeach
    </select>
    </div>
    
      @if($errors->has('giorno_raccolta_id'))
     <div class="alert alert-danger" role="alert">
        {{ $errors->first('giorno_raccolta_id')}}
     </div>
     @endif
    
     <div class="input-group mb-3">
       <label class="input-group-text">Ora inizio</label>
       <input type="time" name="ora_inizio">
      </div>
    
      @if($errors->has('ora_inizio'))
        <div class="alert alert-danger" role="alert">
          {{ $errors->first('ora_inizio')}}
        </div>
      @endif
    
      <div class="input-group mb-3">
        <label class="input-group-text">Ora fine</label>
        <input type="time" name="ora_fine">
      </div>
    
      @if($errors->has('ora_fine'))
        <div class="alert alert-danger" role="alert">
         {{ $errors->first('ora_fine')}}
       </div>
      @endif
    
     @csrf
    

2.表格注释

          public function up()
{
    Schema::create('notes',function (Blueprint $table) {
        $table->increments('id')->start_from(1);
        $table->unsignedInteger('giorno_id');
        $table->unsignedInteger('tipologia_id');
        $table->unsignedInteger('giorno_raccolta_id');
        $table->time('ora_inizio');
        $table->time('ora_fine');
        $table->timestamps();
    });
}

3.WeekController

           <?PHP

              namespace App\Http\Controllers;


               use App\Models\note;
               use App\Models\Day;

               use Illuminate\Http\Request;



             class WeekController extends Controller
              {
               public function index(){
    $notes = note::all();

    return view('calendar.index',compact('notes'));
   
}

public function create(){
    $days = Day::all();
    $categories = Category::all();
    $notes = new note();
    
    return view('calendar.create',compact('days','categories','notes'));
}


public function store(){
        
        note::create($this->validateRequest());
        return redirect()->route('calendar.index');
}




public function show(note $note){
    $note = note::find($note)->first();
    return view('calendar.show',compact('note'));
}


public function edit(note $note){
    $days = Day::all();
    return view('calendar.edit',compact('note','days'));
}



public function update(note $note){
    $note ->update($this->validateRequest());


    return redirect()->route('calendar.show',$note->id);
}


public function destroy(note $notes){
    $notes->delete();
    return redirect()->route('calendar.index');
}


private function validateRequest(){
    return request()->validate([
        'giorno_id' => 'required|unique:notes','tipologia' => 'required','giorno_raccolta' => 'required','ora_inizio' => 'required','ora_fine' => 'required'
    ]);
}



 }

我还有一个问题,当我去保存数据库中的数据时,什么也没有保存。 你能帮我排查应用问题吗。

我从另外两个表中恢复的拒绝日期和类型:

  1. 天数表

          public function up()
        {
           Schema::create('days',function (Blueprint $table) {
             $table->id();
             $table->string('giorno');
             $table->timestamps();
          });
        }
    

2.类别表

      public function up()
{
    Schema::create('categories',function (Blueprint $table) {
        $table->id();
        $table->string('categoria');
        $table->timestamps();
    });
}

笔记模型

       <?PHP

           namespace App\Models;

           use Illuminate\Database\Eloquent\Factories\HasFactory;
           use Illuminate\Database\Eloquent\Model;
           use App\Models\Day;



          class note extends Model
         {
           use HasFactory;

            protected $fillable = [];
            protected $guarded = ['id'];


            public function days(){
            return $this->hasOne(Day::class);
           }
         }

日间模型

      <?PHP

         namespace App\Models;

          use Illuminate\Database\Eloquent\Factories\HasFactory;
          use Illuminate\Database\Eloquent\Model;
          use App\Models\note;
          use App\Models\Category;

          class Day extends Model
    {
         use HasFactory;


        public function notes(){
          return $this->hasOne(note::class);
    }

       public function category(){
      return $this->belongsTo(category::class);
     }
   }

类别模型

        <?PHP

         namespace App\Models;

        use Illuminate\Database\Eloquent\Factories\HasFactory;
        use Illuminate\Database\Eloquent\Model;
        use App\Model\Day;

        class Category extends Model
       {
         use HasFactory;

        public function days(){
        return $this->hasMany(Day::class);
       }

      }

解决方法

我建议您制作 $fillable 并将您想要使其批量分配的属性传递给它 https://laravel.com/docs/8.x/eloquent#mass-assignment。另一方面,我看到您的所有 select 元素都具有相同的 id,因为 DOM id 元素必须是唯一的。最后,检查 $request 接收数据的 create 方法

....(Request $request)
{
   dd($request)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?