ハイドレーションがどのように機能するかを学び、理解するのは初めてです。最初にそれを指摘したかっただけです. 現在、選択クエリと挿入クエリを問題なくハイドレートできます。
私は現在、更新クエリをハイドレートしようとして立ち往生しています。私のエンティティでは、データベースの列の種類ごとに取得/設定オプションを設定しました。ObjectProperty() Hydrator が私の状況にも最適であることがわかりました。
ただし、設定された数の列のみを更新してハイドレーターを介して抽出しようとすると、他のすべてのオプションが設定されておらず、null 値が返されるため、エラーが発生します。特定の行のすべてを更新する必要はなく、いくつかの列だけを更新します。
たとえば、私の DB テーブルには次のようなものがあります。
- 名前
- 電話番号
- 電子メールアドレス
しかし、更新する必要があるのは phone_number だけです。
$entity_passport = $this->getEntityPassport();
$entity_passport->setPrimaryPhone('5551239876');
$this->getTablePassport()->update($this->getHydrator()->extract($entity_passport), array(
'employeeid' => '1'
));
setName() と setEmailAddress() がこの更新プログラムに含まれておらず、値を null にすることはできないというクエリが返されるため、これはエラーを返します。しかし、DB テーブルを見ると、データが既に存在していることは明らかです。そこにあるデータも変更する必要はありません。この例では、PrimaryPhone() 番号のみを変更します。
私はいたるところでドキュメントを探して読んでいますが、私が間違っていることを説明するものは何も見つかりません。Zend\Db (Doctrine ではない) のみを使用していることに注意してください。
私が理解しようとしているこの新機能に関する知識が不足しているため、どこかで何かを見逃していると思います。
おそらく、更新クエリをハイドレートしないでください...私はちょっと迷ったり混乱したりしています。どんな助けでも大歓迎です。ありがとうございました!