You are browsing a version that is no longer maintained.

Slave Okay Queries

Documents

You can configure an entire document to send all reads to the slaves by using the slaveOkay flag:

<?php/** @Document(slaveOkay=true) */class User{    /** @Id */    private $id;}

Now all reads involving the User document will be sent to a slave.

Queries

If you want to instruct individual queries to read from a slave you can use the slaveOkay() method on the query builder.

<?php$qb = $dm->createQueryBuilder('User')    ->slaveOkay(true);$query = $qb->getQuery();$users = $query->execute();

The data in the query above will be read from a slave. Even if you have a @ReferenceOne or @ReferenceMany resulting from the query above it will be initialized and loaded from a slave.

<?php/** @Document */class User{    /** @ReferenceMany(targetDocument="Account") */    private $accounts;}

Now when you query and iterate over the accounts, they will be loaded from a slave:

<?php$qb = $dm->createQueryBuilder('User')    ->slaveOkay(true);$query = $qb->getQuery();$users = $query->execute();foreach ($users as $user) {    foreach ($user->getAccounts() as $account) {        echo $account->getName();    }}