はじめに
FuelPHPを使い始めてだいぶたちました。
最近、SimpleAuthをよく使うのですが、ユーザとそれが投稿した記事とでリレーションを組みたいなあと思っていました。その解決策を紹介します。
Model_Userを作成
APPPATH/classes/model/user.php
<?php
class Model_User extends \Orm\Model
{
protected static $_properties = array(
'id',
'username',
'group',
'profile_fields' => ['data_type' => 'serialize'],
);
protected static $_observers = array(
'Orm\Observer_Typing' => ['events' => ['after_load']],
);
protected static $_table_name = 'users';
}
解説
-
'password'
は読み込むことを想定していないのでプロパティから削除します。 -
'profile_fields'
はPHPの配列がシリアライズされているので、データタイプを指定します。 - そして、
Observer_Typing
を追加します。これは、データタイプに従ってデータを加工してくれます。ロードした後に加工してくれるよう、'after_load'
のみ指定します。
読み込み専用なので、ユーザ情報を変更したり追加したり削除したりする際はAuth::
を使いましょう。