首页 > 解决方案 > (未定义的偏移量:0)无法生成更多数据进行故障排除

问题描述

今天早上我的网络应用程序正在运行。发表了几篇文章后,我尝试登录并得到未定义的偏移量:0 错误。

我从 Laravel 获得的唯一信息是它位于文件路径 laravel\framework\src\Illuminate\Support\Collection.php

在这个文件上,它说错误在第 1688 行:

  public function offsetGet($key)
    {
        return $this->items[$key];
    }

根据我在网上发现的情况,该问题与错误的数据通话有关。也许试图提取不存在的数据。我查看了我的数据库,最后 4 个帖子和评论没有任何文件附件,所以我不确定从哪里开始查找。

此外,该代码是几年前由一位同事编写的,这使我更难以破译。

这是我的刀片文件:


   @if(app('request')->input('gid'))
   <input type="hidden" class="groupid_SeeMore" value="{{app('request')->input('gid')}}"/>
   @endif
   @foreach($timeline as $post)
   <?php
   /** the Below Script will grab all Group Names that go with the post and combine into a single stirng **/
       $groups= array();
             if(strpos($post->grouppermissions,"|")===false){
               foreach(explode(',',$post->grouppermissions) as $id){
                 if($id!=""){
                    $group = DB::table('groups')->where('groupid','=',$id)->get();
                  //  $groups[] .= $group[0]->name;
                      $groups[].=explode('|',$group[0]->name)[0];
                  }
               }
             }elseif(strpos($post->grouppermissions,"|")!==false){
               foreach(explode(',',$post->grouppermissions) as $group){
                   if($group!="")$groups[].=explode('|',$group)[0];
               }
             }
               $groups=implode(',',$groups);
    ?>
      @if($post->status==0)
        <div id="{{$post->id}}" class="Post_Container {{$post->type}} {{$post->type}}{{$post->id}}">
      @endif
      @if($post->status==1)
        <div id="{{$post->id}}" class="Post_Container_Two {{$post->type}} {{$post->type}}{{$post->id}}"><center><p id="cldpsttxt">This post has been closed</center>
      @endif

            @if($post->favorite==0)
            <div class="Post_Header Post_CCthbckgrnd" id="Post_Header{{$post->id}}">
            @endif

            @if($post->favorite==1)
            <div class="Post_Header Post_CCthbckgrnd_Two" id="Post_Header{{$post->id}}"><center><p id="fvrtpsttxt">This post has been Favorited</center>
            @endif

                <input type="hidden" class="lastid" value="{{$post->id}}"/>
                <input type="hidden" class="recent_comment" value="{{$post->recent_comment}}"/>
                <div class="Profile_Picture_Container">

                  <div class="Profile_Picture"><img style="width:100%; height:100%;" src="https://www.vqventure.com/{{$post->pinfo[0]->img}}"/></div>
                </div>
                @if($groups !="")


               <div class="Ginfo">
                 <center>
                    <!-- Below the if statement looks for posts with only one group permission-->
                    @if(strpos($groups, ",") === false)
                     <a href="https://www.vqventure.com/getGroupData?gid={{str_replace(",","",$post->grouppermissions)}}"><b>{{$groups}}</b></a>
                    @endif
                  <!-- Below the if statement looks for posts with multiple group permissions-->
                  @if(strpos($groups, ",") !== false)
                  <?php
                  $key = -1;
                  $perm = explode(',',$post->grouppermissions);
                  ?>
                  @foreach(explode(',',$groups) as $group)
                   <?php $key++;?>
                   @if($group!="")
                   <a href="https://www.vqventure.com/getGroupData?gid={{$perm[$key]}}"><b>{{$group}}</b></a>
                     @endif
                  @endforeach
                  @endif
                 </center>
              </div>
                 @endif
                <div class="Username_Container">
                  <div class="Username_Location">
                    <!--This will be the owner of the post name, for a business it will be the employee name-->

                    <div class="Username"><a href="tel:{{$post->pinfo[0]->phone}}"><b>{{$post->pinfo[0]->name}}</b></a></div>
                  </div>
                </div>


             @if($post->bid != 0 && $post->bid==$user->bid || $post->bid==0 && $post->owner == $user->email)
                <div class="Favorite_Container">
                  <button id="favorite" class="favorite{{$post->id}}" type="{{$post->favorite}}" type2="Timeline"value="{{$post->id}}"></button>
                  <button id="openclose" class="status{{$post->id}}" type="{{$post->status}}" type2="Timeline" value="{{$post->id}}"></button>
                  @if($user->bid!=0)
                  <div class="keywordTypes">
                    <select class="keywordType" id="{{$post->id}}">
                     <?php
                     $cat=$post->category;
                     if($cat=="")$cat="No category";
                     ?>
                      <option value="{{$post->category}}" selected>{{$cat}}</option>

                     @foreach(explode('#$#',$types) as $type)
                      @if($type!="")<option value="{{$type}}">{{$type}}</option>@endif
                     @endforeach
                    </select>
                  </div>
                  @endif
                </div>
                @endif
                <b style="position:absolute; top:10%; right:22%;">#{{$post->id}}</b>
             @if($post->bid != 0 && $user->admin==1 && $post->bid==$user->bid  || $post->owner == $user->email )
                <div class="Delete_Button_Container">
                  <button class="PostDeleteButton" value="{{$post->id}}" id="DeleteMainBTN"></button>
                </div>
              @endif
              </div>

             <center>
              <!-- Video -->
              @if($post->videos!="[]")

             <div class="Post_ContentContainer">
               <div class="Post_Thumbnail_Container" pid="{{$post->id}}">
               <a class="watchVideo" type="" id="{{$post->videos[0]->url}}">
                <center> <div class="Post_Thumbnail">
                 <?php
                  $vpic = substr($post->videos[0]->url,0,-3)."jpg";
                  $vpic2 = str_replace("_correted","",$vpic);
                 ?>
                 <img style="width:100%; height:100%;"src="https://www.vqventure.com/{{$vpic}}" onerror="this.src='https://www.vqventure.com/{{$vpic2}}'" class="video_thumbnail"/>
               </div></center>
             </a>
             </div>
             </div>
              @endif
              <!-- PDF -->
              @if($post->else!="[]")
              @if($post->else[0]->pics!="" || $post->else[0]->pdf!="")
               <div class="Post_ContentContainer">

               <div class="Post_Thumbnail_Container" pid="{{$post->id}}">
               @if($post->else[0]->pdf!="")

                <center><div class="Post_Thumbnail"><a id="wtfPDF"  href="https://www.vqventure.com/<?php echo explode('$!$',$post->else[0]->pdf)[0];?>"><img id="PDF_postview" src="https://www.vqventure.com/imgs/pdf.jpeg"/></a></div></center>
               @endif
              <!-- Images -->
               @if($post->else[0]->pics!="")
                <center>
                <div>
                  <ul class="Post_Thumbnail" style="list-style-type: none;" id="IMAGES">
                @foreach(explode("$!$",$post->else[0]->pics) as $file)
                @if($file !="")

                   <li><img id="IMG_postview"  pid="{{$post->id}}"src="https://www.vqventure.com/{{$file}}"  class="IMG_postview{{$post->id}}"/></li>
                @endif
                @endforeach
                 </ul>
               </div>
               </center>
               @endif
              </div>
             </div>
              <!--This is the end of if pics and pdf-->
              @endif
              @endif
             </center>


           <div class="Post_Info_Container2 Post_CCthbckgrnd">
             <div class="Post_Info_Header">
               <div class="Date_Container">
                 <!--Input the Date here -->
                 <?php
                     $date= explode(' ',$post->timestamp)[0];
                     $time= explode(" ",$post->timestamp)[1];
                 ?>
                 <div class="Date"><center><b>{{$date}}</b></center></div>
               </div>
               <div class="VidTime_Container">
                  <!--Input the length of the video here -->
                 <div class="VidTime"><center></center></div>
               </div>
               <div class="TimeStamp_Container">
                  <!--Input the TimeStamp here -->
                 <div class="TimeStamp"><center><b>{{$time}}</b></center></div>
               </div>
             </div>
        @if($post->videos!="[]")
             <div class="Post_Title_Container">
               <div class="Post_Title_Name"><center><b>Title:</b></center></div>
               <div class="Post_Title">{{$post->videos[0]->title}}</div>
            </div>
        @endif

             <div class="Post_Description_Container">
               <div class="Post_Description_Name"><center><b>Description:</b></center></div>
               <div class="Post_Description">
                 @if($post->videos!="[]") {!!nl2br(e($post->videos[0]->description)) !!}
                 @else
                <p>{!! nl2br(e($post->else[0]->post)) !!}</p>
                  @endif</div>
             </div>
         </div>




     @if($showComments=="yes")
            <div class="Post_CommentContainer" id="Make_Comment{{$post->id}}">
              <textarea class="Post_Comment_TextContainer Post_Comment_TextContainer{{$post->id}}" placeholder="Comment" maxlength="300" rows="2" onkeydown="expandtext(this);" ></textarea>
              <input type="hidden" class="gperms{{$post->id}}" value="{{$post->grouppermissions}}"/>
              <button class="ChooseFile"><label id="CF" for="CFile{{$post->id}}"></label> <input type="file" name="imgs[]" class="CFile" id="CFile{{$post->id}}" multiple/></button>
              <input type="hidden" value="{{ csrf_token() }}" class="CToken{{$post->id}}"/>
              <div class="Post"><button id="Pst" pid="{{$post->id}}" ></button></div>
            </div>
        @if($post->comments!="[]")


        <div class="Post_CommentFeedContainer Post_CommentFeedContainer{{$post->id}}">
        @foreach($post->comments as $comment)
          @if($comment->owner==$user->email)

          <div class="Owner_CommentContainer" id="CommentId{{$comment->id}}">
                  <div class="OCC_Left">
                    <div class="C_Owner_Name"><center>{{$comment->info[0]->name}}</center></div>
                  </div>

                  <div class="OCC_Right">
                    <div class="C_TimeStamp"><center>{{$comment->timestamp}}</center></div>
                     @if($post->bid != 0 && $post->bid==$user->bid  || $post->bid==0 && $comment->owner == $user->email)
                    <button class="Delete_Button" value="{{$comment->id}}" id="C_dltbtn" type="Timeline"></button>
                    @endif
                  </div>

                  <div id="CTwo">{!!nl2br(e($comment->comment)) !!}</div>

                  @if($comment->files!="")
                  <div class="Owner_Media_Container CommentImages" cid="{{$comment->id}}">
                    @foreach(explode('#%%#',$comment->files) as $file)
                     @if(strpos($file, '.pdf') === false && $file!="")<div class="Media_Thumbnail"><img style="width:100%; height:100%;" src="https://www.vqventure.com/{{$file}}" class="CImage{{$comment->id}}"/></div>
                     @elseif(strpos($file, '.pdf') !== false)<div class="Media_Thumbnail"><a href="https://www.vqventure.com/{{$file}}"><img style="width:100%; height:100%;" src="https://www.vqventure.com/imgs/pdf.jpeg"/></a></div>
                     @endif
                    @endforeach
                  </div>
                  @endif
            </div>
             @endif
              @if($comment->owner!=$user->email)
                  <div class="Guest_CommentContainer CommentImages" id="CommentId{{$comment->id}}"  cid="{{$comment->id}}">
                    <div class="GCC_Left">
                      @if($comment->files!="")
                      <div class="Guest_Media_Container">
                        @foreach(explode('#%%#',$comment->files) as $file)
                         @if(strpos($file, '.pdf') === false  && $file!="")<div class="Media_Thumbnail" ><img style="width:100%; height:100%; " src="https://www.vqventure.com/{{$file}}" class="CImage{{$comment->id}}"/></div>
                         @elseif(strpos($file, '.pdf') !== false)<div class="Media_Thumbnail" ><a href="https://www.vqventure.com/{{$file}}"><img style="width:100%; height:100%; " src="https://www.vqventure.com/imgs/pdf.jpeg"/></a></div>
                         @endif
                        @endforeach
                      </div>
                      @endif

                      @if($comment->files!="")
                      <div class="C_TimeStamp_Guest_Two"><center>{{$comment->timestamp}}</center></div>
                      @endif

                      @if($comment->files=="")
                      <div class="C_TimeStamp_Guest"><center>{{$comment->timestamp}}</center></div>
                      @endif
                    </div>

                    <div class="GCC_Right">
                      <div class="C_Guest_Name"><a href="tel:{{$comment->info[0]->phone}}"><center>{{$comment->info[0]->name}}</center></a></div>
                      @if($post->bid != 0 && $post->bid==$user->bid && $user->admin==1|| $post->bid==0 && $comment->owner == $user->email)
                     <button class="Delete_Button" value="{{$comment->id}}" id="C_dltbtn"></button>
                     @endif

                    </div>
                    <div id="COne">{!! nl2br(e($comment->comment)) !!}</div>

                  </div>
              @endif
            @endforeach
          </div>@endif
          @if($post->comments!="[]") <div class="ExpandComment_Container" ><center><div class="Display_AllComments"><button class="Show_All_Comments" id="{{$post->id}}" action=1>Expand Comments...</button></div></center></div> @endif
        @endif
        </div>
        <div id="loading-image" style="display:none; top: 10px; position:relative;"><i>Uploading Comment Please wait....</i></div>
   @endforeach

这是我的控制器:

public function timeline(Request $request){
  if(!isset($this->user->email)){
    if(!$request->queryType)return redirect('/');
  }

  if(isset($this->user->email)){
    $email = $this->user->email;
    // This needs to query where permissions are equal to the email and the owner = email
    $mygroups= groups::where('owner','=',$email)->orwhere('groupadmin','LIKE',"%$email%")->orwhere('members','LIKE',"%$email%")->get();
    $groups= "";
    foreach($mygroups as $group){
      if($group!="")$groups.=','.$group->groupid."$!$".$group->name;
    }
      $groups=explode(',',$groups);
      $timeline = timeline::with('else','videos','comments');
      if(!$mygroups->isEmpty()){
      $timeline = $timeline->where(function ($query) use($groups) {
             for ($i = 0; $i < count($groups); $i++){
               if($groups[$i]!=""){
               $gid=explode('$!$',$groups[$i])[0];
               $gname = explode('$!$',$groups[$i])[1];

                $query->orWhere('grouppermissions', 'like',  '%' . $gid .'%')
                 ->orWhere('grouppermissions', 'like',  '%' . $gname .'%');
                }
             }
           });
           $timeline=$timeline->orwhere('owner','=',$this->user->email);
         }
          if($mygroups->isEmpty()) $timeline=$timeline->where('owner','=',$this->user->email);
          if($request->queryType=="Original")$timeline=$timeline->orderBy('id','desc');
          if($request->queryType=="Recent" || !$request->queryType)$timeline = $timeline->orderBy('recent_comment','desc')->orderBy('timestamp','desc');
          $timeline=$timeline->limit(15)->get();
    foreach($timeline as $g){
       //THis is for grab business or user info for a post , maynot need it
      $pinfo = user::where('email','=',$g['owner']);
      $pinfo = $pinfo->get();
          $g['pinfo']=$pinfo;
          if($g['pinfo'][0]['name']==null)$g['pinfo'][0]['name']=$g['pinfo'][0]['companyname'];
          $g['type']="";
          foreach($g['comments'] as $c){
            $info = user::select("name","img","phone")->where('email','=',$c['owner']);
            $info = $info->limit(1)->get();
            $c['info']=$info;
            $ctimestamp = strtotime($c['timestamp']);
            $cdate = new DateTime("@".$ctimestamp);  // will snap to UTC because of the
            $cdate->setTimezone(new DateTimeZone('America/New_York'));
            $c['timestamp']=$cdate->format('Y-m-d H:i:s');
           }
            $timestamp = strtotime($g['timestamp']);
           $date = new DateTime("@".$timestamp);  // will snap to UTC because of the
           $date->setTimezone(new DateTimeZone('America/New_York'));
           $g['timestamp']=$date->format('Y-m-d H:i:s');
         }

    //if($this->user->admin==1){
      //the $list will need to be the businesses branches data exploded by ','
      $branches = DB::table('users')
         ->wherein('email',explode(',',$this->user->branches))->select('bid','email','name')
         ->get();
         // The next few lines are for invitessent
    //   }
      $sess= $this->user->invitessent;
      $emails = explode(",",$sess);
      $info = array();

      foreach($emails as $email){
       $test =user::select("name","img")->where('email','=',$email)->limit(1)->get();
       if(!$test->isEmpty())$info[]=$test;
       }
       $website = $this->user->website;
       $posts = DB::table('inquiry')->select('*')->where('bid','=', $this->user->bid)->latest()->get();
     $types="";
     if($this->user->bid!=0){
       $biz= user::select('keywords')->where(array(['bid','=',$this->user->bid],['admin','=',1]))->limit(1)->get();
       $types = $biz[0]->keywords;
     }
     if(!$request->queryType)return view('layouts.Timeline',['timeline'=>$timeline,'types'=>$types,'branches'=>$branches, 'posts'=>$posts ,'showComments'=>'yes','user'=>$this->user,'gp_admins'=>'','gp_members'=>'','type'=>'timeline']);
     if($request->queryType)return view('includes.Timeline_Posts',['timeline'=>$timeline,'types'=>$types,'user'=>$this->user,'showComments'=>'yes']);
   }
  }

除了解决问题并允许用户访问他们的数据之外,我希望有人可以帮助我了解导致问题的原因。

整个项目正在重建过程中,我想避免从这个结构的经验教训中进行改造的问题。但是,在我们完成改造之前,我需要快速修复它以使其重新上线。

更新:我将代码更改为使用 ->first 而不是 [0] 但它仍然给出同样的问题。我认为这个问题与以下代码行有关,但不确定如何......

<?php
                  $key = -1;
                  $perm = explode(',',$post->grouppermissions);
                  ?>
                  @foreach(explode(',',$groups) as $group)
                   <?php $key++;?>

到目前为止,我还没有取得任何进展......

标签: phpmysqllaravelcontrollerlaravel-blade

解决方案


推荐阅读