Bonjour, le problème vient de ta compréhension des types de requêtes.
$this->request->data doit être utilisé lorsque tu utilises une requête de type POST, PUT ou DELETE. Pour des requêtes GET, tu dois passer ton argument en paramêtre.
public function search($query){
if(!empty($query)) {
...
}
}