LoginSignup
8
8

More than 5 years have passed since last update.

Symfony 2.6でCRUDアプリ作成方法

Posted at

インストール

Composerのインストール

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
chmod a+x /usr/local/bin/composer

Symfonyのインストール

curl -LsS http://symfony.com/installer > ~/bin/symfony.phar
sudo mv symfony.phar /usr/local/bin/symfony
chmod a+x /usr/local/bin/symphony

プロジェクトの作成と初期設定

symfony new myproject
cd myproject
php app/console generate:bundle --namespace=MyProjectBundle --format=yml

DBの設定と作成

DB名の指定

今回はmyprojectというDB名に変更します。

  • vi app/config/parameters.yml
app/config/parameters.yml
parameters:
    database_name: myproject

DB作成

php app/console doctrine:database:create

テーブルの作成

今回はDoctrineMigrationsBundleを使用してマイグレーションファイルを作成しテーブルの変更を管理します。

DoctrineMigrationsBundleのインストールと設定

DoctrineMigrationsBundleのインストール

  • vi composer.json
    • 以下を追記
composer.json
{
    require: {
        ・・・
        "doctrine/migrations": "1.0.*@dev",
        "doctrine/doctrine-migrations-bundle": "2.1.*@dev",
        ・・・
    }

}
  • install
composer update

設定

  • vi app/AppKernel.php
app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        //...
        new Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle(),
        //...
    );
}
  • app/consoleを実行してdoctrine:migrations:diffなどのものがあれば成功

Migrationの初期化

php app/console doctrine:migrations:status

Migrationファイルの作成

app/console doctrine:migrations:generate
  • 生成されたmigrationファイル(app/DoctrineMigrations/Version*.php)に以下を追記
    /**
     * @param Schema $schema
     */
    public function up(Schema $schema)
    {
        // this up() migration is auto-generated, please modify it to your needs
        $sql = <<<SQL
CREATE TABLE `hoge` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SQL;
        $this->addSql($sql);
    }

Migrationの実行(テーブル作成)

php app/console doctrine:migrations:migrate

これでmyprojectデータベース内にhogeというテーブルが作成されました。

Entityの作成

php app/console doctrine:mapping:import --force MyProjectBundle yml
php app/console doctrine:generate:entities MyProjectBundle

ControllerとViewの作成

php app/console doctrine:generate:crud --entity=MyProjectBundle:Hoge

これで

php app/console server:run

して

http://localhost:8000/hoge/へアクセスすれば完了です!

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8