Symfony 2 - 从 table 中获取最后插入的行
Symfony 2 - fetch the last inserted row from table
如何重写此代码才能从 table 中获取最后插入的记录?
$repository = $entityManager->getRepository('AdminBundle:MyTable');
$product = $repository->find($id);
我试过
$repository->findBy(array('id','DESC')->setMaxResults(1);
但这对我不起作用。
请试试下面的
$repository = $entityManager->getRepository('AdminBundle:MyTable');
$repository->setMaxResults(1)->orderBy('id', 'DESC');
$results = $repository->getQuery()->getSingleResult();
您可以使用 findBy()
和 order by、limit 和 offset 参数来获取最新记录
$results = $repository->findBy(array(),array('id'=>'DESC'),1,0);
- 第一个参数用于过滤条件
- 第二个参数按条件排序
- 第三个参数用于限制
- 第四个参数设置偏移量
请注意,它将 return 您的结果集设置为对象数组,因此您可以从结果中获取单个对象 $results[0]
除了在你想使用它的地方修改代码,你还可以创建一个存储库方法并在需要时调用它。
/**
* Repository method for finding the newest inserted
* entry inside the database. Will return the latest
* entry when one is existent, otherwise will return
* null.
*
* @return MyTable|null
*/
public function findLastInserted()
{
return $this
->createQueryBuilder("e")
->orderBy("id", "DESC")
->setMaxResults(1)
->getQuery()
->getOneOrNullResult();
}
参考资料:
https://symfony.com/doc/current/doctrine.html#querying-for-objects-the-repository
在找了一个之后我决定自己试一试,我觉得它不那么冗长:
$myRepository->findOneBy([], ['id' => 'DESC']);
您可以将这些函数添加到您的存储库中:
public function getLastRow(): ?YourEntity
{
return $this->findOneBy([], ['id' => 'DESC']);
}
public function getLastId(): int
{
$lastRow = $this->getLastRow();
return $lastRow ? $lastRow->getId() : 0;
}
你可以通过获取插入对象的id来收集
$em->persist($entity);
$em->flush();
$entity->getId();
或
$entitymanager->getRepository("entity")->findBy([],["id"=>desc])->getId();
如何重写此代码才能从 table 中获取最后插入的记录?
$repository = $entityManager->getRepository('AdminBundle:MyTable');
$product = $repository->find($id);
我试过
$repository->findBy(array('id','DESC')->setMaxResults(1);
但这对我不起作用。
请试试下面的
$repository = $entityManager->getRepository('AdminBundle:MyTable');
$repository->setMaxResults(1)->orderBy('id', 'DESC');
$results = $repository->getQuery()->getSingleResult();
您可以使用 findBy()
和 order by、limit 和 offset 参数来获取最新记录
$results = $repository->findBy(array(),array('id'=>'DESC'),1,0);
- 第一个参数用于过滤条件
- 第二个参数按条件排序
- 第三个参数用于限制
- 第四个参数设置偏移量
请注意,它将 return 您的结果集设置为对象数组,因此您可以从结果中获取单个对象 $results[0]
除了在你想使用它的地方修改代码,你还可以创建一个存储库方法并在需要时调用它。
/**
* Repository method for finding the newest inserted
* entry inside the database. Will return the latest
* entry when one is existent, otherwise will return
* null.
*
* @return MyTable|null
*/
public function findLastInserted()
{
return $this
->createQueryBuilder("e")
->orderBy("id", "DESC")
->setMaxResults(1)
->getQuery()
->getOneOrNullResult();
}
参考资料: https://symfony.com/doc/current/doctrine.html#querying-for-objects-the-repository
在找了一个之后我决定自己试一试,我觉得它不那么冗长:
$myRepository->findOneBy([], ['id' => 'DESC']);
您可以将这些函数添加到您的存储库中:
public function getLastRow(): ?YourEntity
{
return $this->findOneBy([], ['id' => 'DESC']);
}
public function getLastId(): int
{
$lastRow = $this->getLastRow();
return $lastRow ? $lastRow->getId() : 0;
}
你可以通过获取插入对象的id来收集
$em->persist($entity);
$em->flush();
$entity->getId();
或
$entitymanager->getRepository("entity")->findBy([],["id"=>desc])->getId();