Your question is a little confused until the end, are you just trying to create 2 relationships from a planned event and users (an event with a competitor and an adversary)? If so, this can be achieved by expanding your relationships in your schedule model with foreign keys.
Instead of saying:
var $hasMany = array('Competitor');
You can expand and set the name of the foreign key and table:
var $hasMany = array( 'Competitor' => array( 'className' => 'Competitor', 'foreignKey' => 'competitor_id' ), 'Opponent' => array( 'className' => 'Competitor', 'foreignKey' => 'opponent_id' ) );
This will establish 2 relationships to the same model, and you can save them separately. Further reading.
source share