いろいろ~備忘録~

WEBエンジニアによる記録

勉強になったことを記録

【FuelPHP】oilコマンドを利用したOrmモデルの自動生成

説明

oilコマンドを利用して、Ormモデルマイグレーションを作成します。
また、テーブルの作成もoilコマンドで自動でします。

引用
oilコマンドでテーブルの作成するメリットは、データベースの構造もバージョン管理できるようになること

1.oilコマンドのインストール

oilコマンドを利用するためには、下記のコマンドでインストールをします。

$ curl get.fuelphp.com/oil | sh

詳しくはドキュメント
インストール方法 - インストール - FuelPHP ドキュメント

2.モデルの生成

コマンドラインFuelPHPをインストールしたディレクトリに移動して、次のコマンドを入力します。

$ php oil g model user id:int name:varchar[50]


下記のようにコマンドの応答を見ると、
1行目は、APPPATH/classes/model/直下にsudentというモデルが作成されています。
2行目は、APPPATH/migrations/というディレクトリ以下にマイグレーションが作成されています。

 Creating model: /home/apache/sample/fuel/app/classes/model/user.php
 Creating migration: /home/apache/sample/fuel/app/migrations/001_create_user

マイグレーションはテーブル作成時に、使用します。
Generate - Oil パッケージ - FuelPHP ドキュメント

3.テーブル作成

先ほど作成したマイグレーションを使用して、テーブルを作成します。
次のコマンドを入力します。

$ php oil refine migrate

db.phpで設定されているデータベース上にuserテーブルmigrationという2つのテーブルが作成されています。

マイグレーションファイルとモデルの中身を確認します。

<?php
// マイグレーション
namespace Fuel\Migrations;

class Create_users
{
	public function up()
	{
		\DBUtil::create_table('users', array(
			'id' => array('constraint' => 11, 'type' => 'int'),
			'name' => array('constraint' => 50, 'type' => 'varchar'),
			'created_at' => array('constraint' => 11, 'type' => 'int', 'null' => true),
			'updated_at' => array('constraint' => 11, 'type' => 'int', 'null' => true),

		), array('id'));
	}

	public function down()
	{
		\DBUtil::drop_table('users');
	}
}

<?php
// モデル
class Model_User extends \Orm\Model
{
	protected static $_properties = array(
		
		'id',
		'name',
		'created_at',
		'updated_at',
	);

	protected static $_observers = array(
		'Orm\Observer_CreatedAt' => array(
			'events' => array('before_insert'),
			'mysql_timestamp' => false,
		),
		'Orm\Observer_UpdatedAt' => array(
			'events' => array('before_update'),
			'mysql_timestamp' => false,
		),
	);

	protected static $_table_name = --crud<'users';

}

備考

Model_Crudモデルの自動生成
oil g modelコマンドのオプションとして、末尾に--crudを追加することにより、
\Orm\Modelではなく、Model_Crudを拡張したモデルを自動生成することができます。
Model_Crudクラスでも、\Orm\Modelと同様にcreated_atupdated_atが使用できます。
 
 
お疲れ様でした。

【FuelPHP】DBの結果を配列で取得

例えば下記のようにクエリを実行します。
結果はオブジェクトを生成します。

<?php
// オブジェクトを生成
$result = DB::select()
 ->from('users')
 ->where('id', 1)
 ->execute();


結果を配列で返して欲しい場合は、下記のようにexecute()の後にas_array()をくっつければ、
配列を生成します。

<?php
// 配列を生成
$result = DB::select()
 ->from('users')
 ->where('id', 1)
 ->execute()
 ->as_array();

Vagrantで作成したCentOSにAnsibleをインストール

条件として

先にVirtualBoxtとVagrantのインストールを済ましておいて下さい。
まだの場合は、下記の記事を参考にしてみて下さい。
wakuwakupush.hatenablog.com

1.CentOSVirtualBoxへの登録

VirtualBox用boxファイルを
varant box add {適当な名前} {boxファイルURL}
で取得し、VirtualBoxに登録します。
今回はCentOS65を使用します。

VirtualBoxVagrantのインストール済みとして進めます。

vagrant box add centos_ansible https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box

2.Vagrantファイルの作成

次に、適当なところに作業ディレクトリを作成して、その中にVagrantファイルを作成します。

// vagrantfileを作成
$ vagrant init centos_ansible

// vagrantfileが存在するか確認
$ dir

3.Vagrantファイルを編集

vagrantfile

// VMのIPアドレスを設定 コメントアウト 29行目
config.vm.network "private_network", ip: "192.168.33.10"

// Vagrantfileが配置されているディレクトリの、provision.sh(シェル)を実行 67行目
config.vm.provision :shell, :path => "provision.sh"

次に実行するprovision.shを、Vagrantfileと同じディレクトリに作成します。
Ansibleのインストールを記述しましょう。

provision.sh

// ansibleインストール追記
sudo yum install -y ansible

最初にvagrant upを行った際に、provision.shが実行されてAnsibleがインストールされるはずです。

4.Ansibleがインストールされたか確認

下記のコマンドで仮想マシンを立ち上げます。
※Vagrantfileのディレクトりに移動してから行ってください。
コマンドを実行すると仮想マシンが立ち上がり、シェルによってAnsibleのインストールなどが始まります。

// 仮想マシンを起動
$ vagrant up

仮想マシンが立ち上がったら、ssh接続をします。
Teratermなど、他のクライアントソフトで接続する場合は、
 Vagrantfileのconfig.vm.networkで設定したIPアドレスで接続できます。

ssh接続したら、下記コマンドでAnsibleがインストールされたか確認します。

$ ansible --version

Ansibleのバージョンが表示されればOKです。
もし表示されなければ、provision.shが存在するディレクトリ上で下記コマンドを実行して下さい。

$ vagrant provision

再度、Ansibleがインストールされたか確認します。
Ansibleのバージョンが表示されればOKです。

以上になります。お疲れ様でした。

Vagrantで作成したローカル環境にNginxをインストール

wakuwakupush.hatenablog.com
※環境構築がまだの場合は、先に上記の記事から環境を構築してみて下さい。

1-1.Nginxのインストール

yumリポジトリCentOSに登録します

rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm


Nginxをyumでインストール

sudo yum install nginx


バージョン確認

nginx -v

1-2.Nginxの起動

バージョン確認ができたら、以下のコマンドで起動をします。

sudo service nginx start


Webブラウザで確認します。

[http://192.168.33.10/]

※「Welcome to nginx on EPEL!」と表示されます。

VirtualBox+VagrantでCentOS環境構築

VirtualBoxインストール

OSに合ったVirtualBoxをダウンロードしてインストール
Downloads – Oracle VM VirtualBox

Vagrantインストール

OSに合ったVagrantをダウンロードしてインストール
www.vagrantup.com

1-1. CentOSVirtualBoxへの登録

VirtualBoxVagrantのインストールが完了したら、VirtualBox用boxファイルを
varant box add {適当な名前} {boxファイルURL}
で取得し、VirtualBoxに登録します。

コマンドプロンプトより

vagrant box add CentOS65 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box

1-2.Vagrantファイルの作成

適当にディレクトリを作成して、その中にVagrantファイルを作成します。

// 新規ディレクトリを作成
mkdir centos

// 作成したディレクトリに移動
cd centos

// Vagrantファイルを作成
vagrant init CentOS65

// Vagrantファイルが存在するか確認
dir

1-3.Vagrantファイルを編集

Vagrantfile

# VMのIPアドレスを設定 コメントアウト
config.vm.network "private_network", ip: "192.168.33.10"

# GUIモードの設定をONにする場合は設定(不要ならコメントアウトのままで問題なし)
config.vm.provider "virtualbox" do |vb|
  # Display the VirtualBox GUI when booting the machine
  vb.gui = true
end

編集が完了したら、次はVirtualMachine(以下、VM)を起動します。

1-4.VMを起動

Vagrantfileがあるディレクトリで下記コマンドを実行します。

vagrant up

ここでエラーが発生しなければ、成功です。

sshで接続

Teratermなど、他のクライアントソフトで接続する場合は、
Vagrantfileのconfig.vm.networkで設定したIPアドレスで接続できます。

Vagrantコマンド一覧

// 起動
vagrant up

// 再起動
vagrant reload

// 現状確認
vagrant status

// 一時停止
vagrant suspend

// suspendからの復帰
vagrant resume

// シャットダウン
vagrant halt

// 消去
vagrant destroy