Допустим стандартный запрос:
$books = $entityManager->getRepository('Book')->findBy([],null,2,1); // Все записи
foreach($books as $book) {
echo $book->id."\r\n";
foreach($book->authorRead as $author) {
echo '--'.$author->name."\r\n";
}
echo "\r\n";
}
Где таблица Book связана с таблицей Authors по полю "authorRead".
В спойлере спрячу структуру Book и Author, чтобы на всякий случае было бы понятнее.
Свернутый текст
/** @Entity */
class Book
{
/** @Id @GeneratedValue @Column(type="integer") */
public $id;
/**
* Unidirectional - Many users have marked many comments as read
*
* @ManyToMany(targetEntity="Author",inversedBy="bookAuthor",cascade={"persist", "remove"})
* @JoinTable(name="book2author")
*/
public $authorRead;
/** @Column(type="datetime", name="date",options={"default": 0}) */
public $date;
/** @Column(type="string", name="name") */
public $name = ''; // По умолчанию пусто
public function __construct()
{
$this->date = new DateTime('now');
$this->id = new \Doctrine\Common\Collections\ArrayCollection;
$this->authorRead = new \Doctrine\Common\Collections\ArrayCollection;
}
}
/** @Entity */
class Author
{
/** @Id @GeneratedValue @Column(type="integer") */
public $id;
/** @Column(type="string", name="name") */
public $name;
/**
* Bidirectional - Many comments are favorited by many users (INVERSE SIDE)
*
* @ManyToMany(targetEntity="Book", mappedBy="authorRead")
*/
public $bookAuthor;
public function __construct()
{
$this->id = new \Doctrine\Common\Collections\ArrayCollection;
$this->name = 'default value';
}
}
Так вот, как выбрать через LIMIT понятно для findBy. Но чтобы писать LIMIT надо уже знать количество записей. Как работать через queryBuilder я видел в мануале, но там надо писать собственный запрос с JOIN таблица связей + JOIN таблица авторов, а не пользоваться готовым запросом из findBy.
А вот как получить количество записей в данном случае? Гуглю Paginator и нет ответа, гуглю SQL_CALC_FOUND_ROWS в связке с findBy, и тоже не вижу толкового ответа.
_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).