木下 敏夫
kino****@tktoo*****
2007年 12月 3日 (月) 17:26:47 JST
木下です。 e-commerceのZenCartを OO化した ZenMagick というのがあるのですが、 この辺りと連動できればSHOP機能を持った高機能なサイトも 可也早く作成することが可能になるのかな。 Takeshi Amano さんは書きました: > bossatamaさん > >> CI+Propelの組み合わせは興味深いですね。 >> ところで、CIには標準でもmodelsとactive recordがありますが、 >> 簡単に言ってpropelのここが良いってところが知りたいです。 >> CIのmodelsよりさらに使いやすいとなれば、MVCのアプローチを >> 推奨することが可能ですよね。現在のmodelsはCIではオプション扱い >> ですから。 > > Propel はJavaのTorqueをポートしたObject relational マッピング > ツールです。なんだか難しそうですが、要するにデータベースの各行を > オブジェクトとして扱えるようになります。 > > そうすることで、DB周りのコードを書く量が減りCIと組み合わせてかなり > 楽々コーディングな日々が送れます。 > > propelについてあまり日本語の資料が少ないので、torqueでGoogle > 検索でもしてもらえば日本語関係の資料が出てきましたのでそちらを参照 > してもらってもいいと思います。 > > CIのモデルクラス周りは使ったことがないので比較対照というわけには > 行きませんが、とりあえずPropel で何ができるか実例をいくつか紹介 > します。 > > 1. 行の新規追加、更新 > > 例えばbookという本の情報が入っているテーブルに行を追加する場合は > > $book = new Book(); > $book->setTitle('blah blah2'); > $book->setISBN('12345'); > $book->save(); > > と書くだけで大丈夫です。既にある行を変更するには > > $book = BookPeer::retrieveByPK($book_id); > $book->setISBN('12345'); > $book->save(); > > と書くだけで変更できちゃいます。簡単でしょ? > > 2. 他のテーブルとのjoin > > ここがPropelの醍醐味です。 > > 上記のbookテーブルに加えてpublisher(出版社)テーブルが > n対1(book対publisher)の関係でつながっているとします。 > 1つの出版社が多数の本を出しているイメージですね。 > > それで特定の出版社が出版している本を求める場合 > > $publisher = PublisherPeer::retrieveByPK($publisher_id); > $books = $publisher->getBooks(); > > で各本を取ってこれます。 > > そして、各本のタイトルを求める場合はこんな感じで回します。 > > foreach ($books as $book) { > echo $book->getTitle(); > } > > ね簡単でしょ? > > もう少し複雑にして各本にくっついているカテゴリーの名前を > 求める場合は > > foreach ($books as $book) { > echo $book->getCetegory()->getName(); > } > > でokです。 > > こういうコードの書き方になれるともう他のDBレイヤーでいちいち > SQLを書くのがいやになってきます。 > > 当然複雑なSQLをベタ書きすることも可能です。最新のベータ版 > 1.3からはPDOという抽象レイヤーを使ってそういったSQLを書くよう > になりました。 > > あくまで今回は何ができるかと言う話だけをしましたが、どうやって > CIでPropelを使えるようになるかと言う話はTIPSで詳しく説明できれ > ばと思います。 > > Takeshi Amano > p****@takes***** > > _______________________________________________ > Codeigniter-users mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > > -- 木下敏夫 mailto:kino****@tktoo***** http://www.tktools.jp/ http://www.oidc.jp/bmb/index.php?topic=-m-D14