【FuelPHP】Sessionクラスの使い方
Sessionクラス
FuelPHPには、Sessionクラスが用意されています。
リクエスト時に削除されるような一時的なセッション(フラッシュセッション)の発行も可能です。
設定ファイル
セッションクラスは、 fuel/core/config/session.php 設定ファイルで設定されています。
既にデフォルト設定が入力されていますが、必要に応じて設定を修正したい場合は、
fuel/app/config/ 配下にファイルをコピーして設定を修正することで上書きされます。
セッションの読み書き
set()メソッド
第1引数に変数名、第2引数に値を指定します。値には配列の指定も可能です。
例
// 文字列を指定 Session::set('user_id', 'id_1'); // 配列を指定 Session::set('login', array('user' => $user_id, 'hash' => $login_hash));
get()メソッド
set()メソッドで保存したセッションデータは、get()で同じ変数名を指定することで値の取得が可能です。
例
// セッションデータを取得 $user_id = Session::get('user_id'); // SimpleAuthのログイン情報を取得 $username = Session::get('username'); $login_hash = Session::get('login_hash');
get()に引数を指定しない場合は、現在セッションに保存されているデータを全て取得します。
// 全セッションデータを取得 $sess_data = Session::get();
フラッシュセッション
フラッシュセッションとは、次のリクエスト時に自動的に削除されるセッションデータのことです。
フラッシュセッションの読み書きは、set_flash()、get_flash()を用いて行います。
引数の指定方法はset()、get()メソッドと同様になります。
- keep_flash()
フラッシュセッションを読み込まれていない状態に戻します。フラッシュセッションの寿命を次のリクエストまで伸ばします。
// 引数はフラッシュセッションの伸ばしたい変数名 Session::keep_flash('target');
削除、破棄
セッション変数を削除する場合は、delete()、delete_flash()を使用します。
引数には、削除したい変数名を指定します。
// user_idという名前のセッションデータを削除 Session::delete('user_id'); // targetという名前のフラッシュセッションを削除 Session::delete_flash('target');
セッション自体を破棄する場合は、Session::destroy()を使用します。
セッションIDの変更と取得
セッションIDはSessionクラスの設定で自動的に変更がされますが、明示的に行いたい時にはSession::rotate()メソッドを使用します。
// セッションIDを変更 Session::rotate();
セッションIDの取得にSession::key()を使用します。
$sess_id = Session::key();
【FuelPHP】Ormでリレーション設定をした表からデータ取得
Ormモデルでリレーションの設定ができていない場合は、下記の記事を参考にしてみて下さい。
wakuwakupush.hatenablog.com
1.データを取得
Ormモデルでリレーション設定をした表をfind()メソッドを利用して、データを取得します。
コントローラー上で、次のように記述します。
<?php // 全件取得 $data = Model_Shop_data::find('all', array( 'related' => array( 'shop_photos', // リレーションの設定名を指定 ), ));
結果は、2テーブルからデータを取得します。返り値はオブジェクト形式です。
【FuelPHP】Ormモデルのリレーションを設定
Ormパッケージを利用する場合は、先にOrmパッケージの設定を行って下さい。
wakuwakupush.hatenablog.com
FuelPHPでは、リレーションタイプが4種類あります。
・Belongs To
・Has One
・Has Many
・Many to Many
今回は、「Belongs To」と「Has Many」のみを利用します。
参考
はじめに - Relations - Orm パッケージ - FuelPHP ドキュメント
1.Ormモデルとテーブルの用意
今回はoilコマンドを利用して、「users」「phones」のOrmモデル、テーブルを自動生成します。
コマンドライン上で、次のコマンドを入力します。
$ php oil g model users name:varchar[50] $ php oil g model phones user_id:int number:varchar[20]
「users」「phones」のモデル、マイグレーションが自動生成されます。
次はテーブルを生成します。次のコマンドを入力します。
$ php oil refine migrate
DBにテーブルが作成されていればOKです。
2.レコードの作成
レコードを作成するときは、下記のようにコントローラー内で入力します・
<?php // インスタンス $user = Model_User::forge(); // プロパティに値を代入 $user->name = 'karesansui'; // DBにinsert $user->save();
コントローラにアクセスすると、usersテーブルへの挿入が行われています。
3.リレーションの設定
モデル間の関連性の記述をしていきます。
APPPATH/classes/model/user.php 内でリレーションを設定します。
<?php class Model_User extends \Orm\Model { protected static $_has_many = array( 'phones' => array( 'model_to' => 'Model_Phone', 'key_from' => 'id', 'key_to' => 'user_id', 'cascade_save' => 'true', 'cascade_delete' => 'true', ) );
次にAPPPATH/classes/model/phone.php 内でリレーションを設定します。
<?php class Model_Phone extends \Orm\Model { protected static $_belongs_to = array( 'users' => array( 'model_to' => 'Model_User', 'key_from' => 'user_id', 'key_to' => 'id', 'cascade_save' => 'true', 'cascade_delete' => 'false', ) );
リレーションの設定が完了したら、下記のようにコントローラーに記載します。
<?php $user = Model_User::find(1); $phone = Model_Phone::forge(); $phone->number = '090-1111-2222'; $user->phone[] = $phone; $user->save();
コントローラにアクセスして、SQLを確認してみると、usersテーブルの更新とphonesテーブルへの挿入が行われています。
【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'; }