我有一个关于使用Eloquent进行的两个不同SQL请求的小问题。 我的第一个请求允许我有一个完整的培训课程列表,第二个请求显示我已经用户完成的培训。
所以,我有那些雄辩的请求(他们分开工作......)
$todo = User::select('formations.typesession_id', 'formation_metier_ua.formation_id', 'formations.codeformation', 'users.id', 'formations.nomformation', 'users.nom', 'users.prenom', 'formations.dureeformation')
->distinct()
->join('uas', 'users.ua_id', '=', 'uas.id')
->join('formation_metier_ua', 'uas.id', '=', 'formation_metier_ua.ua_id')
->join('formations', 'formation_metier_ua.formation_id', '=', 'formations.id')
->join('typesessions', 'typesessions.id', '=', 'formations.typesession_id')
->where('users.id', '=', $idUser )
->get();
$done = User::select('formations.typesession_id', 'parcoursformations.formation_id', 'formations.codeformation', 'users.id', 'formations.nomformation', 'users.nom', 'users.prenom', 'formations.dureeformation')
->distinct()
->join('parcoursformations', 'users.id', '=', 'parcoursformations.user_id')
->join('formations', 'parcoursformations.formation_id', '=', 'formations.id')
->join('typesessions', 'typesessions.id', '=', 'formations.typesession_id')
->where('users.id', '=', $idUser )
->get();
以下是我的请求转储:
(2) [Array(4), Array(3)]
0: Array(4)
0:{typesession_id: 3, formation_id: 1, codeformation: "FR1", id: 3, nomformation: "Hygiène et prévention", …}
1:{typesession_id: 3, formation_id: 6, codeformation: "FR7", id: 3, nomformation: "Sécurité incendie", …}
2:{typesession_id: 3, formation_id: 7, codeformation: "FR8", id: 3, nomformation: "Sécurité électrique", …}
3:{typesession_id: 2, formation_id: 8, codeformation: "GU", id: 3, nomformation: "Gestes d'urgence", …}
1:Array(3)
0: {typesession_id: 3, formation_id: 6, codeformation: "FR7", id: 3, nomformation: "Sécurité incendie", …}
1:{typesession_id: 3, formation_id: 7, codeformation: "FR8", id: 3, nomformation: "Sécurité électrique", …}
2:{typesession_id: 2, formation_id: 8, codeformation: "GU", id: 3, nomformation: "Gestes d'urgence", …}
我的问题是如何管理这两个集合的差异。从理论上讲,我应该能够使用诸如diff()
之类的集合方法......
例如,$todo
包含4个条目,$done
包含1个数组...所以我应该得到条目" NOT IN" $完成
$remainingCollection = $todo->diff($done);
$remainingCollection = $remainingCollection->all();
return $remainingCollection;
不幸的是,我有一个空数组。