ツイート ブックマーク 元同僚の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マッパーなんで、いろいろとメモリを食うわけです。 んで、解放しないま
この記事は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ページを開く