我需要使用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;
我怎么做? 有什么建议 ?
答案 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都是唯一的。