今回はDoctrineの注意点的な所の備忘録として。 Doctrine 2 Batch Processing — Doctrine Project doctrineのバルクインサートはinsert文を1つにまとめられるわけではない 僕はバルクインサートといえば次のようなSQLを想像していました。 insert into (...) values (...), (...), (...), ... あるテーブルに対して複数行インサートをしたいときに、insert文を並べなくてもインサートする値を並べていけばその個数分インサートするというやつです。 普通のインサートを並べるよりも非常に高速かつ問い合わせるのが1回で済むのでスマートです。 ってきりDoctrineでもこの動きができるんだーと簡単に思ってしまったのですが、よく読むとDoctrineの提供するbulk insertはこのような挙動では
ツイート ブックマーク 元同僚のFさんがFacebookで書いてたのと、自分なりのまとめということで、簡単にDoctrine2のバルクインサートについて書いておこうと思います。 使用しているDBはMySQL想定です。 Doctrine2を使ってバルクインサートする場合は以下のようなコードになるかと思います。 <?php $batch = 1000; foreach ($entities as $key => $entity) { $em->persist($entity); if ($key % $batch == 0) { $em->flush(); } } で、まあこれはこれでいいんですが、いくつかトラップがあると思います。 まあどれもメモリが足りなくなる問題だと思いますが・・・ clearをしていない : まあO/Rマッパーなんで、いろいろとメモリを食うわけです。 んで、解放しないま
こんにちは、熊谷です。 暑い日が続く今日この頃、皆さんはいかがお過ごしでしょうか。 以前、MySQL Workbenchを使ってみようということでOSX版のバージョン5.2.xについて触れましたが、この5.2.xはまだアルファ版ということもあり普段使用するにはためらうことがあるかもしれません。しかし、それから2ヶ月半ほど過ぎ、この5.2.xはまだアルファ版ではありますが、以前日本語処理に問題のあった5.1.xが晴れて安定版となり、問題なく動作するようになっています。 ちなみに、もし今現在5.2.xを使用していて5.1.xへダウングレードしたい場合、作成したmwbファイルは今のところ古いバージョンでは開くことができません。しかし、mwbファイル自体はzipで圧縮されているファイルなので解凍し出てきたxmlファイルをエディタ等で開き、2行目に書かれてあるversionを1.3.1に変更しzip
<?php use Doctrine\ORM\Mapping as ORM; #[ORM\Entity] #[ORM\Table(name: "ecommerce_order", options: ["charset"=>"utf8","collate"=>"utf8_unicode_ci"])] #[ORM\ChangeTrackingPolicy("DEFERRED_IMPLICIT")] class EcommerceOrder { #[ORM\Id] #[ORM\Column(type: "integer")] #[ORM\GeneratedValue(strategy: "AUTO")] private $id; #[ORM\Column(type: "timestamp", length: 255, nullable: true)] private $ordered_at; #
この記事はSymfony Advent Calendar 2015 17日目の記事です。前日の記事は@teematsuさんの「Symfony 2.8とPHP-DIのAuto Wiring」でした。 こんにちは。はじめまして。tarokamikazeです。 すっかりSymfonyおじさんと化した私は、数々の後輩たちにSymfonyに関する相談を受けてきました。 そのなかでも、社内でよく聞かれることをまとめます。 導入編 The Symfony Book を読んだ人、ブログチュートリアルをやってみた人向けです。 01.この案件にSymfony2を使いたいんですが 下記のような条件では、Symfony2はおすすめです。 専用サーバーを使える。 他のPHP フレームワークを触ったことがある。 ビジネスロジックが複雑になりそうなシステムを作る。(業務アプリ等) テストは当然書く。 1 プログラミング
Symfony2でORMとして使われているDoctrine2における、エンティティの状態の扱い方に関連する問題ですね。最初は戸惑うポイントだと思います。 最初に注意が必要なのは、Doctrineでは「データベースのレコード」ではなく、「オンメモリのオブジェクト」を中心に考えなくてはならないということです。 Doctrineでのエンティティ管理の基本 アプリケーションの側から見ると、 アプリケーションのコード → Doctrineの世界 → DBの世界 というように、明示的にDBの世界との間にDoctrineの世界が設けられます。 この3つの世界間で、 新規エンティティ登録 既存レコードの読み込み 既存レコードの変更 は次のようになっています。 新規エンティティの登録時 $plan = new Plan(); // アプリケーションで、新規エンティティのインスタンス ↓ $entityMan
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く