How to sort query result according to various search conditions in fetch query of CakePHP 2.
Problem: Priority based sorting of records
Example: Search a string (“Proposalways StudySection”) and display records in following order:
Contain all words (“Proposalways StudySection”) in course_name field.
Contain all words (“Proposalways StudySection”) in tag_name field.
Contain all words (“Proposalways StudySection”) in summary field.
[conditions] => Array(
[OR] => Array(
[0] => Array(
[0] => lower(course_name) LIKE '%proposalways%'
[1] => lower(course_name) LIKE '%studysection%'
)
[1] => Array(
[0] => lower(tag_name) LIKE '%proposalways%'
[1] => lower(tag_name) LIKE '%studysection%'
)
[2] => Array(
[0] => lower(summary) LIKE '%proposalways%'
[1] => lower(summary) LIKE '%studysection%'
)
)
)
[order] => CASE WHEN lower(course_name) LIKE ‘%proposalways%’ AND lower(course_name) LIKE ‘%studysection%’ then 1 WHEN lower(tag_name) LIKE ‘%proposalways%’ AND lower(tag_name) LIKE ‘%studysection%’ then 2 ELSE 3 END ASC
Output:
| Order | Course Name | Tag Name | Summary |
| 1 | Proposalways, StudySection | E-SIGN CONTRACTS, CLOSE DEALS FASTER, Online test. | Webner Solution Company Products. |
| 2 | Online certification | Proposalways, StudySection | Test your Knowledge, Earn Certificates |
| 3 | Online certification | E-SIGN CONTRACTS | Proposalways, StudySection |
| 4 | E-SIGN CONTRACTS | E-SIGN CONTRACTS | Proposalways, StudySection |
