スポンサーリンク

今回は、PHPのORマッパPropelを使って、ミニブログを作ってみます。
ログインとか、そういう処理は書きません。
とりあえず、フロントから渡されたデータをDBにつっこんだり、
取り出したりする部分にフォーカスしてます。

PHPのORマッパ Propel でPHPのクラスを生成するためには、3つのファイルが必要です。
  • schema.xml
  • runtime-conf.xml
  • build.properties
データ

記事一件ごとのデータは、下記のデータを持つことにします。
  • ユニークなID
  • 投稿者
  • 本文
  • 投稿日時
build.properties
プロジェクトの名前
propel.project=miniblog
propel.database=mysql
propel.database.user=root
propel.database.password=
propel.database.url=mysql:dbname=miniblog

schema.xml
データベースのスキーマは、XML形式で記述します。
データベース名 miniblog
テーブル名 blog
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="miniblog" defaultIdMethod="native">
  <table name="blog">
    <column name="id" type="BIGINT" primaryKey="true" autoIncrement="true" />
    <column name="uid" type="VARCHAR" size="150" required="true" />
    <column name="body" type="VARCHAR" size="500" required="true" />
    <column name="create_at" type="TIMESTAMP" defaultExpr="CURRENT_TIMESTAMP" />
  </table>
</database>

idは、auto incrementされます。
create_atは、行を追加したときに、CURRENT_TIMESTAMPが自動的に挿入されます。

runtime-conf.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
 <log>
  <ident>propel-miniblog</ident>
  <level>7</level>
 </log>
 <propel>
  <datasources default="miniblog">
   <datasource id="miniblog">
    <adapter>mysql</adapter>
    <connection>
     <dsn>mysql:dbname=miniblog</dsn>
     <user>root</user>
     <password></password>
    </connection>
   </datasource>
  </datasources>
 </propel>
</config>

mysqladmin create miniblog

クラスを生成し、MySQLにテーブルを作ります。

propel .
propel . insert-sql

下記のソースだけで、DBにデータを書き込むことができます。
SQL文を一行も書く必要はありません。

<?php
include 'propel/Propel.php';
set_include_path("/home/who/dev/propel/miniblog/build/classes" .
		PATH_SEPARATOR . get_include_path());
Propel::init('miniblog/build/conf/miniblog-conf.php');
include 'miniblog/build/classes/miniblog/Blog.php';

$blog = new Blog();
$blog->setUid('User1');
$blog->setBlog('blog message 1.');
$blog->save();
?>

データを読み出してみる。idが1のデータを読み出します。
***Peer::retrieveByPK(プライマリキー) を使うことで、
プライマリキーを指定して取得することができます。

<?php
include 'propel/Propel.php';
set_include_path("/home/who/dev/propel/miniblog/build/classes" .
		PATH_SEPARATOR . get_include_path());
Propel::init('miniblog/build/conf/miniblog-conf.php');
include 'miniblog/build/classes/miniblog/Blog.php';
include 'miniblog/build/classes/miniblog/BlogPeer.php';

$firstBlog = BlogPeer::retrieveByPK(1);
echo $firstBlog->getId(), PHP_EOL;
echo $firstBlog->getUid(), PHP_EOL;
echo $firstBlog->getBlog(), PHP_EOL;
?>

カラムを指定して、でselectする方法
Criteriaクラスは、PropelのSQLをシンプルにする方法です。

user1さんのブログをDBからselectしてみます。
<?php
include 'propel/Propel.php';
set_include_path("/usr/home/j/dev/propel/miniblog/build/classes" .
		PATH_SEPARATOR . get_include_path());
Propel::init('miniblog/build/conf/miniblog-conf.php');
include 'miniblog/build/classes/miniblog/Blog.php';
include 'miniblog/build/classes/miniblog/BlogPeer.php';
$c = new Criteria();
$c->add(BlogPeer::UID, 'user1');
$blogs = BlogPeer::doSelect($c);
foreach ($blogs as $blog) {
	echo $blog->getId(), PHP_EOL;
	echo $blog->getUid(), PHP_EOL;
	echo $blog->getBlog(), PHP_EOL;
	echo PHP_EOL;
}
?>

Propelを使うとこんな感じで、少しのPHPを書くだけで、DBの読み書きが簡単にできます。
参照しているページ (サイト内): [2008-03-19-2]

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー