在这篇简短的文章中, 我们将向你介绍如何使用Symfony 4中的Doctrine用主键计算一个表中有多少条记录。
计算表(存储库)中的所有行在此示例中, 我们假设你的数据库中已经有表, 并且已经为它们创建了模型。在这里, 我们将使用Entity \ Articles.php文件中可用的Articles模型:
<
?php// src/Entity/Articles.phpnamespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/** * Articles * * @ORM\Table(name="articles") * @ORM\Entity(repositoryClass="App\Repository\articlesRepository") */class Articles{/*** @var int** @ORM\Column(name="id", type="bigint", nullable=false)* @ORM\Id* @ORM\GeneratedValue(strategy="IDENTITY")*/private $id;
/*** @var string** @ORM\Column(name="name", type="string", length=255, nullable=false)*/private $name;
/*** @var string|null** @ORM\Column(name="video", type="text", length=65535, nullable=true)*/private $video;
/*** @var string** @ORM\Column(name="content", type="text", length=0, nullable=false)*/private $content;
public function getId(): ?int{return $this->
id;
}public function getName(): ?string{return $this->
name;
}public function setName(string $name): self{$this->
name = $name;
return $this;
} public function getContent(): ?string{return $this->
content;
}public function setContent(string $content): self{$this->
content = $content;
return $this;
} }
该表包含一个主键, 其ID标识符为主键。在我们的控制器中, 我们将使用以下查询来计算表中有多少行:
<
?phpnamespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
// Include class of the entity (table) that you want to queryuse App\Entity\Articles;
class AdminController extends AbstractController{public function index(){// 1. Obtain doctrine manager$em = $this->
getDoctrine()->
getManager();
// 2. Setup repository of some entity$repoArticles = $em->
getRepository(Articles::class);
// 3. Query how many rows are there in the Articles table$totalArticles = $repoArticles->
createQueryBuilder('a')// Filter by some parameter if you want// ->
where('a.published = 1')->
select('count(a.id)')->
getQuery()->
getSingleScalarResult();
// 4. Return a number as response// e.g 972return new Response($totalArticles);
}}
请注意, 我们并不是绝对调用表中的所有信息, 而只是调用将对ID字段进行计数的count指令。 getSingleScalarResult函数从dbms返回的结果中检索单个标量值。如果结果包含多个标量值, 则抛出异常。纯/混合区别不适用。
【如何在Symfony 4中使用Doctrine正确计算表中的所有行】编码愉快!
推荐阅读
- 如何在Google FeedBurner中启用Awareness API(FeedCount)
- 如何使用qpdf CLI删除PDF的密码
- Android(textview超链接)
- Android-是否可以将可点击链接添加到字符串资源中
- 在android上禁用setMovementMethod(LinkMovementMethod.getInstance())
- 从app中的Safari链接打开safari
- 如何让电子应用程序打开以“http(//”或“https://”开头的所有链接,并在浏览器中打开target =“_ blank”而不是app)
- 如何解决Android ndk build命令失败()
- 我们如何将CMake或ndk-build集成到Android Studio 3.0.1中( Gradle版本是4.1,android插件版本3.0.1)