【问题标题】:Where Operator In LaravelLaravel 中的 where 运算符
【发布时间】:2015-05-12 05:25:07
【问题描述】:

我需要使用 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,但如果$subScIDsArray 中的 一个 id 不等于 subject_schedule_id',我需要检查 id 的每个 id '返回 false ;

我该怎么做? 有什么建议么 ?

【问题讨论】:

  • 你的意思是你想得到从 subScIDsArray 中排除的 subject_schedule_ids ??
  • 不,我需要检查 StudentAttendess 中的 subject_schedule_ids 是否等于 subScIDsArray 中的 id,例如 subScIDsArray = (55,43,2) ,但 StudentAttendess 中的 subject_schedule_ids 包含 (55,2) 返回 false

标签: php laravel laravel-4 laravel-5


【解决方案1】:

您可以对照返回的记录长度检查包含 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 都是唯一的。

【讨论】:

    猜你喜欢
    • 2014-12-02
    • 2011-01-10
    • 1970-01-01
    • 2021-05-08
    • 2014-06-15
    • 1970-01-01
    • 2021-10-06
    • 2021-03-10
    • 1970-01-01
    相关资源
    最近更新 更多