一連の販売メモと取引記録の間に多対 1 の関係を設定しようとしています。
/**
* @var TransactionInterface
*
* @ORM\ManyToOne(targetEntity="Twb\Common\Model\Broker\TransactionInterface")
* @ORM\JoinColumn(name="FormNoSeller", referencedColumnName="Form")
*/
private $formnoseller;
/**
* @var TransactionInterface
*
* @ORM\ManyToOne(targetEntity="Twb\Common\Model\Broker\TransactionInterface")
* @ORM\JoinColumn(name="FormNoBuyer", referencedColumnName="Form")
*/
private $formnobuyer;
現時点では、これらは 2 つの異なるバンドル (「SalesBundle」と「BrokerBundle」) に分割されています。それを念頭に置いて、SalesBundle の SalesMemo エンティティから BrokerBundle の Transaction エンティティへのインターフェイスを使用しています。
何らかの理由で、フォームで$formnoseller
とのいずれかまたは両方を参照すると、dev.log で、SalesMemos のand/orフィールドに$formnobuyer
一致するすべてのトランザクション行を選択した後、Doctrineがトランザクション テーブルのすべての行 ( TransactionInterface が参照するエンティティ)。DB には無数の行があり、多くのメモリを消費するため、これは少し問題です。$formnoseller
$formnobuyer
SELECT
関連のあるすべての行をDoctrineが選択しないようにする方法はありますか? それとも、Doctrine が関連付けを行う方法を正しく理解していますか? 助けてくれてありがとう。