Laravel中的操作员

时间:2015-05-12 05:25:08

标签: php laravel laravel-4 laravel-5

我需要使用where运算符来检查表中的一些ID,如下所示

 $subScIDs  = SubjectSchedule::where('subject_start_id',Input::get('substID'))
                        ->whereNull('deleted_at')
                        ->select('id')->get(); 
 $subScIDsArray = array() ;

 foreach ($subScIDs as $id) 
 {
   $subScIDsArray [] = $id->id ;
 }
 // here my issue
 $subScInStudAttends = StudentAttendees::whereIn('subject_schedule_id',$subScIDsArray)
                                       ->select('subject_schedule_id')->get(); 


 if ($subScInStudAttends) 
  {
         return " true " . $subScInStudAttends;

 }else{
         return "false";
    }

我在此代码中的问题

 $subScInStudAttends =  StudentAttendees::whereIn('subject_schedule_id',$subScIDsArray)
                                         ->select('subject_schedule_id')->get();  

whereIn运行良好,它会在$subScIDsArray中获取任何ID,但如果<{1}}中的一个 ID不等于$subScIDsArray,我需要检查ID的每个ID返回false;

我怎么做? 有什么建议 ?

1 个答案:

答案 0 :(得分:3)

您可以根据返回的记录长度检查包含ID的数组的长度。

if( count($subScIDsArray) == count($subScInStudAttends) ){
    // all IDs in the array have a corresponding record in the database
}

或者更好的是,如果您的应用程序逻辑允许,只需获取记录的计数,然后与ids数组的长度进行比较。

$subScInStudAttendsCount = StudentAttendees::whereIn('subject_schedule_id', $subScIDsArray)->count('subject_schedule_id');

if( count($subScIDsArray) == $subScInStudAttendsCount ){
    // all IDs in the array have a corresponding record in the database
}

此代码假定数据库中的ID都是唯一的。