如何重写此代码以从表中获取最后插入的记录?
$repository = $entityManager->getRepository('AdminBundle:MyTable');
$product = $repository->find($id);
我试过像
这样的东西$repository->findBy(array('id','DESC')->setMaxResults(1);
但它对我不起作用。
答案 0 :(得分:4)
您可以使用findBy()
使用order by和limit paramters来获取最新记录
$results = $repository->findBy(array(),array('id'=>'DESC'),0,1);
请注意,它会将结果集作为对象数组返回给您,这样您就可以从结果中获取单个对象$results[0]
答案 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();
答案 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();