Symfony 2 - 从表中获取最后一个插入的行

时间:2018-01-03 06:34:28

标签: php symfony symfony-2.8

如何重写此代码以从表中获取最后插入的记录?

$repository = $entityManager->getRepository('AdminBundle:MyTable');
$product = $repository->find($id);

我试过像

这样的东西
$repository->findBy(array('id','DESC')->setMaxResults(1);

但它对我不起作用。

6 个答案:

答案 0 :(得分:4)

您可以使用findBy()使用order by和limit paramters来获取最新记录

$results = $repository->findBy(array(),array('id'=>'DESC'),0,1);
  • 第一个参数是针对过滤条件
  • 第二个参数按标准排序
  • 第三个参数是限制
  • 第四个参数设置偏移量

请注意,它会将结果集作为对象数组返回给您,这样您就可以从结果中获取单个对象$results[0]

FindBy() Examples

答案 1 :(得分:3)

您可以创建存储库方法,并在必要时调用它,而不是在您想要使用它的地方进行黑客攻击。

@Component({ 
   selector:'all-page',
   templateUrl:'./code.templet.html',
   styleUrls: ['./color.component.css']


})
export class AppComponent

参考文献: https://symfony.com/doc/current/doctrine.html#querying-for-objects-the-repository

答案 2 :(得分:2)

请尝试以下

$repository = $entityManager->getRepository('AdminBundle:MyTable');
$repository->setMaxResults(1)->orderBy('id', 'DESC');
$results = $repository->getQuery()->getSingleResult();

参考: https://undebugable.wordpress.com/2016/01/27/symfony2-querybuilder-find-first-and-find-last-record-in-table/

答案 3 :(得分:2)

寻找一个我决定自己尝试之后,我认为它不再那么冗长:

$myRepository->findOneBy([], ['id' => 'DESC']);

答案 4 :(得分:0)

您可以将这些函数添加到您的存储库中:

public function getLastRow(): ?YourEntity
{
    return $this->findOneBy([], ['id' => 'DESC']);
}

public function getLastId(): int
{
    $lastRow = $this->getLastRow();
    return $lastRow ? $lastRow->getId() : 0;
}

答案 5 :(得分:0)

可以通过获取插入对象的id来收集

$em->persist($entity);
$em->flush();
$entity->getId();

$entitymanager->getRepository("entity")->findBy([],["id"=>desc])->getId();