queryBuilder ->fields([ 'title', 'target', 'url', 'page.title', 'page.status', 'page.slug', 'menus.sort', 'menus.menus_id.name' ]) ->aliases('page[title]', 'page_title') ->aliases('page[status]', 'page_status') ->aliases('page[slug]', 'page_slug') ->filter([ 'page' => [ 'status' => 'published' ], 'menus' => [ 'menus_id' => [ 'name' => $name, 'status' => 'published' ] ] ]) ->find(); // @TODO Workaround sort functions seems have problems with relationals fields if (count($results['data'])) { usort($results['data'], function($a, $b) { return ($a['menus'][0]['sort'] > $b['menus'][0]['sort']); }); } return $results; } }