【问题标题】:how can i handle this error : Undefined offset: 0我该如何处理这个错误:未定义的偏移量:0
【发布时间】:2021-01-30 09:00:57
【问题描述】:

我正在制作一个在线学校平台,其中一部分学生可以看到它的课程及其信息..但相关函数返回此错误:未定义偏移量:0(查看:C:\xampp\htdocs\OnlineSchool\资源\views\admin\student\ClassReport.blade.php)

模型之间存在一些关系 我的模特:

USER(学生和教师)Ô LEVEL(班级级别)Ô教室。

=> 学生和教室之间存在多对多关系(数据透视表)

请把我从这个愚蠢的错误中拯救出来 用户:

    class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password','image','level','code_meli',
    ];

    /**
     * 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 classroom(){
        return $this->hasMany  (classroom::class);
    }

    public function ClassRoomStudent(){
        return $this->belongsToMany (classroom::class ,'classroom_user','user_id','classroom_id');
    }
}

教室:

class classroom extends Model
{
    protected $fillable = [
        'title', 'teacher_id', 'level_id','day','time','price',
    ];

    public function Student(){
        return $this->belongsToMany (user::class ,'classroom_user','classroom_id','user_id');
    }

    public function level(){
        return $this->belongsTo (level::class );
    }
    public function teacher(){
        return $this->belongsTo (user::class );
    }

}

等级:

class level extends Model
{
    protected $fillable = [
        'title',
    ];

    public function classroom(){
        return $this->hasMany (classroom::class);
    }
    public function exam(){
        return $this->hasMany (exam::class);
    }
}

以及我在控制器中的功能:

public function MyClasses(){
    $student_id=auth ()->user ()->id;
    $classrooms=classroom::with ('level','teacher','factor')->wherehas('student',function ($q) use($student_id){
        $q->where('id',$student_id);
    })->get();
     
    return view ('admin.student.ClassReport',compact ('classrooms','student_id'));
}

最后..我的刀片:

 @foreach($classrooms as $class)
                    <tr>

                        <td>{{$i++}}</td>
                        <td>{{$class->title}}</td>
                        <td>{{$class->teacher[0]->name}}</td>
                        .
                        .
                        .
                        .
                    </tr>
            @endforeach 

【问题讨论】:

  • 为什么是$class-&gt;teacher[0]-&gt;name 而不是$class-&gt;teacher-&gt;name
  • public function teacher() 返回单个User 实例,或null;它不是一个数组/集合,所以你不能使用[0](数组索引),你也不需要。 $class-&gt;teacher-&gt;name ?? 'None' 将输出教师的姓名,如果班级没有教师姓名,则为 None
  • 另外,修正你的编码标准;不要添加不必要的空格,如auth ()-&gt;user ()-&gt;id,应为auth()-&gt;user()-&gt;id,型号名称为StudlyCaseUserLevelClassroom等,并保持一致; public function classroom()public function ClassRoomStudent() 使用截然不同的情况...应该是 public function classroom()public function classroomStudent()
  • 我做到了,但我仍然收到此错误@Qirel

标签: php laravel eloquent relational-database laravel-6


【解决方案1】:

教室只属于一位老师,无需使用de零索引,只需输入$class->teacher->name

【讨论】:

    猜你喜欢
    • 2018-10-14
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    相关资源
    最近更新 更多