質問 > 管理機能 > Doctrineのpersist()時、auto increment対象のIDを指定したい |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
nicketium |
投稿日時: 2017/9/29 1:42
対応状況: −−−
|
新米 登録日: 2016/11/30 居住地: 札幌市 投稿: 10 |
Doctrineのpersist()時、auto increment対象のIDを指定したい Eccube3です。
題名の通りですが、 挿入される時のIDを指定したいと思っています。 Entityを使ったpersistでできないかと思っておりますが、 Eccube3のIDにはsetterがないので、 どうやったらID固定ができるかわかりません。 可能な処理があれば教えて頂きたいです。 |
468 |
投稿日時: 2017/9/29 11:59
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: Doctrineのpersist()時、auto increment対象のIDを指定したい doctirneにはIDを指定してセットする機能は無いのではないでしょうか?
IDを固定したい要件がどういったものか想像がつかないのですが、 差し支えなければ、教えていただけないでしょうか? (他システムとの連携等ですか?)
|
nicketium |
投稿日時: 2017/9/30 20:56
対応状況: −−−
|
新米 登録日: 2016/11/30 居住地: 札幌市 投稿: 10 |
Re: Doctrineのpersist()時、auto increment対象のIDを指定したい ご返信ありがとうございます。
案件で、他ECサイトからのDBデータ移行を簡単にできるシステムを作っております。 DBを直接操作しないのは、クライアント様が今後も自身でできるようにが理由です。 更に色々調べましたところ自己解決まで至りましたので、解決法のご報告致します。 ・ReflectionProperty ・AssignedGenerator を使用します。 関数が海外フォーラムにのっておりましたので、記載します。
この関数にpersistしたいエンティティを投げることで任意のカラムで任意のIDを登録できます。 普段のプラグイン運用等では使わないと思いますが、 初期インストール後になにかをやってくれるプラグイン というところの幅が広がるのではないかと思います。 ご返信頂きありがとうございました。 |
468 |
投稿日時: 2017/10/1 9:17
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: Doctrineのpersist()時、auto increment対象のIDを指定したい 情報提供ありがとうございます。
こういった手段があるのですね。勉強になります。 1点だけ気になったのは、オートインクリメントやシーケンスの数値も自動的に進められるのでしょうか? オートインクリメント等の数値はそのままで通常運用で新規登録を進めていった結果、 ある数値までIDが採番された時に、 IDの重複エラーが発生すると困るかと思いました。 (例えば、ID=3を指定してエンティティを保存し、 後日、新規登録を操作した時、3回目で重複エラーが発生する等) 時々、このコミュニティでもデータ移行を行って運用を開始したものの、 しばらくしてから商品や注文の新規登録が出来なくなった (オートインクリメントやシーケンスは1のままスタートした事によるID採番時の重複エラーが原因) という話を見かけますので・・・。 いつか時間がある時に、そのあたりの挙動は確認したいと思いますが、 任意のIDで登録できるのは、データ移行では便利かと思います。
|
nicketium |
投稿日時: 2017/10/1 22:19
対応状況: 解決済
|
新米 登録日: 2016/11/30 居住地: 札幌市 投稿: 10 |
Re: Doctrineのpersist()時、auto increment対象のIDを指定したい オートインクリメントの値についてですが、
一度こちらで実行したものを確認したところ、挿入した値の次 にはなっているようです。 dtb_product インストール直後のレコードが ID2まで登録済 先述関数でID99指定でインサート product_id=99のレコードが生成される。 AUTO INCREMENT = 100 を確認。 doctrineを経由してますので、そのあたりの処理もやってくれているみたいですね。 ただ、 ID99でインサート→ID4でインサート した場合等は未検証なので、 今のところ、テーブルをクリエイトした直後にIDを昇順ソートした状態でインサートすれば問題はでない。 というところでしょうか。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |