Да, вы можете. Но он не имеет много документации. Например, если мы хотим, чтобы у сущности Пользователь было много Местоположений, а у Местоположений было много Пользователей, то вам нужно что-то вроде этого:
В методе настройки вашей модели User вы указали:
$this->hasMany('Location as Locations', array(
'refClass' => 'UserLocation', //Refering to the relation table
'local' => 'user_id', //the user id in the realtion table
'foreign' => 'location_id' //the location id in the relation table
));
В методе установки модели местоположения вы положили это:
$this->hasMany('User as Users', array(
'refClass' => 'UserLocation',
'local' => 'location_id',
'foreign' => 'user_id'
));
В методе установки модели отношения «многие ко многим» (UserLocation) вы можете поместить это:
$this->hasMany('User', array(
'local' => 'user_id',
'foreign' => 'id'));
$this->hasMany('Location', array(
'local' => 'location_id',
'foreign' => 'id'));
Теперь, если вы хотите выполнить Doctrine_Query и получить всех пользователей с идентификатором местоположения: 12, это будет что-то вроде:
$q = Doctrine_Query::create()
->select("u.*")
->from('User u')
->leftJoin("u.UserLocation ul")
->where('ul.location_id = ?',12);
Если вы вставляете пользователя, не забудьте также создать объект UserLocation, что-то вроде этого:
$userLocation = new UserLocation();
$userLocation->location_id = $locationId;
$userLocation->last_login = date('Y-m-d H:i:s');
$userLocation->user_id = $user->id; //from the user you created before
$userLocation->save();