我々はそうのようなモデルに間の単純なミリの関係を作成したカウントゲット:TYPO3 Extbaseミリメートル関係が
<?php
namespace VENDOR\COMPANY\Domain\Model;
class Posts extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
//..
/**
* users
*
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\VENDOR\COMPANY\Domain\Model\Users>
*/
protected $likedBy = null;
//..
}
MySQLデータベースは、新しいミリメートルのテーブルを作成しても..domain_post
テーブル内のカウンタ列users
を作成します。関連するすべてのユーザーに電話をかけてカウントするのではなく、このカウントを行うための「軽い」方法はありますか?
$amountLikes = $post->getLikedBy()->count();
それぞれ〜30000件の好きな投稿のリストを想像してみてください。スクリプトはメモリに30000個のオブジェクトを構築し始めます。数字のためにポストテーブルを尋ねることは、私にとってより現実的なものです。しかし、どのように?
あなたが実行されたステートメントを数える場合は、extbaseはまだ、すべての一致するエンティティのためのextbaseオブジェクトを構築します。しかし、最初にクエリを実行せずにcountを呼び出すだけでは、docs https://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/3-implement-individual-database-queries.htmlに記載されているようにはなりません。 。 – j4k3
@ j4k3この重要な提案をありがとうj4k3 - 私は上記の答えを編集しました。 –