I guess you did not look at the manual, everything you need to know is on this page.
This is a HABTM, hasAndBelongsToMany association. Your join table does not follow the CakePHP convention either, it should be named companies_users. See the page about conventions. If you don't follow conventions you have to declare everywhere what table, model and foreign keys you're using. If it's a legacy DB and you can't change them, fine. But if it's a new app you should really follow the frameworks conventions, it will make things more easy.
User <-> CompaniesUser <-> Company
class User extends AppModel {
public $hasAndBelongsToMany = array(
'Company' =>
array(
'className' => 'Company',
'joinTable' => 'companies_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'company_id',
'with' => 'CompaniesUser'
)
);
}
You'll have to define the assoc on the "other side", the company model as well.
To be able to fetch all companies for the user in a pagination query you'll have to define the joins manually. There are plenty of questions and answer on SO that explain how to do this, here is an one, another one.