Doctrine ORM
PHPのORM
Data Mapperというパターンらしい
デザインややこしい
SQLの書き方と違い過ぎて、どう書いたらいいのか知るのが大変
DoctrineのMapping
DoctrineのCollection型
DoctrineのEntity Manager
flush(), persit()とか
DoctrineExtensions
https://github.com/beberlei/DoctrineExtensions
https://qiita.com/haruna-nagayoshi/items/5a9f08e3b337bf36c227
DQL内で色々な関数を実行できる
website
docs
v1の日本語版 docs
めっちゃ古い
データ取得時の流れ
Doctineへ情報取得のためにメッセージを送る
mapping定義の読み込み
DoctrineがDBから情報を取得
Entityを読み込む
mapping定義から、リクエストされた情報に対応するEntity Classを特定する
instanceを返却
Entityをinstantiateして、取得したデータをpropertyに設定して、呼び出し元へ返す
よくわかっていないがこういう序列があるっぽい ref
DoctrineのQuery
最も基本的
findとかfindAllとか
ORM感が一番ある
これで済むならこれで済ませたい
DQL
DoctrineのQueryでは指定しづらい条件をSQLっぽい構文で書く
DoctrineのQueryBuilder
DQLよりもさらに複雑
select()とかwhere()みたいなmethodで条件を書いていく
なんでこっちのほうがDQLより複雑になるんだ #??
stringだけで書いてるDQLのほうが柔軟でありそうなのになmrsekut.icon
Native SQLというのもある
どういう位置づけなのかは知らん
https://www.doctrine-project.org/projects/doctrine-orm/en/2.9/reference/native-sql.html
DoctrineでNULLを最後に持ってくるようにsortする
#??
仮にrepository内で書いた時に、このcがどういうkeyを持っているかってどこを見たらわかる?
↓では、emailとemail_mobileをkeyとして指定しているが、それらを持っていることをどこを見たら確認できるのか
code:php
$query = $this->createQueryBuilder('c')
->where('c.email = :email OR c.email_mobile = :email_mobile')
->setParameter('email', $username)
->setParameter('email_mobile', $username)
->getQuery();
constructorノナカの__constructしてるところか
symfonyみたいな、EntityとrepositoryがべったりなやつってEntityの作り方が歪だったら、全部編になるし、しかも修正がめちゃくちゃしづらい、みたいにならない?
tutorial
https://tombo2.hatenablog.com/entry/2015/02/10/163910
古いけど