영역과 작업의 관계가 many-to-many 인 ORM 요청을 필터링하고 싶습니다.Laravel 4 - 필터가있는 페이지 매기기 Eloquent ORM
페이지 매김이 필요하지만 $ final-> paginate()를 사용할 수는 없지만 그 이유는 무엇입니까? 사용하는
내 코드를, 개선 방법 -> PAGINATE() 더 Paginatore는 ::/* sélectionne tout les candidats qui sont disponnibles, et qui ont une date inférieure
* à celle configuré
*/
$contacts = Candidate::with('regions', 'jobs')
->where('imavailable', '1')
->where('dateDisponible', '<=', $inputs['availableDate'])
->get(); // ta requete pour avoir tes contacts, ou par exemple tu fais un tri normal sur tes regions. Il te reste à trier tes jobs.
// ajoute un filtre, pour n'afficher que ceux qui reponde true aux 2 test dans les foreachs
$final = $contacts->filter(function($contact) use($inputs) {
// par défaut ils sont false
$isJob = false;
$isRegion = false;
// test que le candidat à l'un des jobs recherché par l'entreprise
foreach($contact->jobs as $job) {
// si le job id du candidat est dans la liste, alors on retourne true
if(in_array($job->id, $inputs['job'])) {
$isJob = true;
}
}
// test que le candidat accepte de travailler dans l'une des régions echerchées
foreach($contact->regions as $region) {
// si region id du candidat est dans la liste, alors on retourne true
if(in_array($region->id, $inputs['region'])) {
$isRegion = true;
}
}
// si les 2 renvoie true, alors nous returnons le candidat à la vue
if($isRegion && $isJob){
return true;
}
else{
return false;
}
});
// converti le resultat en tableau pour l'importer dans le Paginator
$finalArray = $final->toArray();
// calcule le nombre de candidat dans le tableau
$finalCount = count($finalArray);
// créer le pagniate manuellement, car on ne peux faire $final->paginate(20)
$paginator = Paginator::make($finalArray, $finalCount, 2);
// return la liste des candidats
return $paginator;
감사하지 않습니다.
감사합니다. 아주,하지만 어떻게 laravel 마이그레이션으로 'ADD INDEX'를 추가 할 수 있습니까? – timothylhuillier
'$ table-> index ('state'); ' http://laravel.com/docs/schema#adding-indexes –
oups, 나는 그것을 보지 못했습니다. 감사합니다 – timothylhuillier