Hatena::ブログ(Diary)

bobchinの日記 このページをアンテナに追加 RSSフィード

2008年05月13日(火)

[][]メモを見つけたので貼っておく 19:00 メモを見つけたので貼っておく - bobchinの日記 を含むブックマーク

migration

*XXX => カラム名は多言語対応となる
description|content|body => text
id => id integer not null auto_increment primary_key
XXX_id|XXX_by => integer index
position => integer index
XXX_at => datetime
XXX_on => date
is_XXX|has_XXX|do_XXX|does_XXX|are_XXX => boolean not null default '0' index
XXX (YYY) => XXX string(YYY)
XXX stringYYY => XXX string(255)

後ろに使えそうな単語
limit XXX
max XXX
length XXX
default XXX
integer|int
float
datetime
date
timestamp
time
text
string
binary
boolean
NOT NULL
AUTO INCREMENT
INDEX
UNUQUE
HASH
FULLTEXT
PRIMARY KEY|pk

booleanは使わない方がいい

model

*モデル

**属性
-table_name:テーブル名。指定しない場合はモデルのクラス名からアンダースコア区切りを大文字に変え複数形にしたもの。
-acts_as
 act_as :カンマ区切り指定|配列指定。キーは(例)List|NestedSet|Tree)値はオプション。
--オプションについて
オプションは各オブジェクトのinitメソッドを見るとよい。
--List
モデルをリスト(配列)として扱うことができるようになる。属性listとしてアクセスする。
--NestedSet
モデルを階層化セットとして扱うことができるようになる。
--Tree
モデルをツリーとして扱うことができるようになる。属性treeとしてアクセスする。

-combined_attributes:複数のカラムで1つのカラムを形成する:|配列で指定
var $combined_attributes = array(
    array('name', array("%s, %s","%[^,], %s"), 'last_name', 'first_name'),                // 1:新しいカラム名 2:フォーマット(セットするときとゲットするとき) 3以降:引数となるカラム
    array('email_link', array("compose_email_link","parse_email_link"), 'email', 'name'), // 
);

-_accessibleAttributes|_protectedAttributes:値の管理を直接引数指定でやる場合にカラムを指定する

-(hasOne|has_one)|(belongsTo|belongs_to)|(hasMany|has_many)|(hasAndBelongsToMany|habtm|has_and_belongs_to_many)
例)
$var $has_many = array(
    '関連モデル名' => options
);

各オプションはaddAssociated('関連モデル名(属性名にもなる)', 'オプション')を見よ!

--オプション
 hasOne
  class_name(関連名のキャメライズしたもの)
  table_name(class_nameをテーブル名化したもの)
  foreign_key(親モデルテーブル名の単数形_id)
  instantiate: 親モデルのロード時にインスタンス化するかどうか(true|false)
  conditions:関連を取得するときの条件を指定
  order:関連を取得するときの順序を指定
  include_conditions_when_included
  include_order_when_included
  dependent:親モデル削除時に同時に削除するかどうか(true|false)
  counter_cache:使用していない?
  remote:使用していない?

 hasMany
  class_name(関連名の単数形をキャメライズしたもの)
  conditions:関連を取得するときの条件を指定
  order:関連を取得するときの順序を指定
  group:関連を取得するときのGROUPBYを指定する
  limit:関連を取得するときの件数を指定する
  offset:関連を取得するときの最初の位置を指定する
  finder_sql:関連を取得するときの完全なSQLを指定する
  counter_sql:関連の件数を取得するときの完全なSQLを指定する
  include_conditions_when_included
  include_order_when_included
  foreign_key(親モデルテーブル名の単数形_id)
  dependent(nullify):親モデル削除時に同時に削除するかどうか(destroy|delete_all|nullify)
  include:さらに関連を取得する?
  instantiate: 親モデルのロード時にインスタンス化するかどうか(true|false)
  handler_name(関連名の単数形をアンダースコア化したもの):関連を扱う属性名を指定
  select:使用していない?

 belongsTo
 habtm
 
**定数
-AK_ACTIVE_RECORD_VALIDATE_TABLE_NAMES:モデルインスタンス生成時にテーブル名の存在確認をするかどうか


**オブザーバ
モデルの外に機能を提供できる。基本はコールバックで以下のタイミングでコールできる。
-beforeCreate
-afterCreate
-beforeSave
-afterSave
-beforeUpdate
-afterUpdate
-beforeDestroy
-afterDestroy
-beforeValidation
-afterValidation
-beforeValidationOnCreate
-afterValidationOnCreate
-beforeValidationOnUpdate
-afterValidationOnUpdate

オブザーバ側は、上記のメソッドが存在すればそのメソッドが、それ以外はupdateメソッドがコールされる。
引数は、
上記メソッドの場合は、
--第1引数:モデルオブジェクト
それ以外は
--第1引数:コールされた上記のメソッド名
--第2引数:モデルオブジェクト

2008年05月11日(日)

[][]あけろす日記 21:35 あけろす日記 - bobchinの日記 を含むブックマーク

http://d.hatena.ne.jp/gegegen/20080510/1210438967

Akelosチュートリアル的な話があります。

こういう情報の方がわかりやすくていいですね。

かなり前にやったので、インストーラ日本語化してたのすっかり忘れてました。

本家のチュートリアル日本語化もしとりますのでよろしくです。

http://www.akelos.org/docs/tutorials/booklink-ja

しかしチュートリアルがそのままではちゃんと動かないという罠があったりした気もする。。。


[]AkelosPostgreSQL 21:39 AkelosでPostgreSQL - bobchinの日記 を含むブックマーク

ソースをみてたときは実際に使おうと思っていたので、

自分の環境であるPostgreSQLをでやってました。これが罠だった記憶があります。

本家はMySQLをメインに使っていると思われるので、

PostgreSQLの考慮が足りなくてハマることがあったりします。

対応してますけど、MySQLを使った方が無難だと思われます。

KuniTsujiKuniTsuji 2008/05/12 09:10 以前にいろいろ書いてたのを紹介していただきましたね〜
しばらく離れていたのでまたみてみよう(^-^)/

2008年05月07日(水)

[][] 08:18 2008-05-07 - bobchinの日記 を含むブックマーク

http://d.hatena.ne.jp/gegegen/20080503/1209829208

PHP Framework Fight!にAkelosで参加されるようです。すばらしい!

実践投入しようと思って色々と中身を見ていたこともありますが、

機能としては欲しいものが多々あるのに、中身が・・・とかがあって

ちょっと難しかった。。。

おいらみたいなへっぽこでない人が使ったらどうなるかは見てみたいな。


レンサバ解約してしまって、情報を下げてしまったので

どっかに上げておくかなぁ。

どこまでできるかわかりませんが、暇をみてサポートできたらなぁ

と思いますがはてさて。。。

追記:

Akelosで困ったことといえば、pythonのTurboGearっぽく(詳しくないのでイメージ的だけど)

内部的にいろんな外部ライブラリを使ってたりするので

いざ調べてみようと中をみるとpearとか使っててそちらの使い方を調べることに

なったりして結構悲劇的なことが多かったんですよね。

多分そこはCakePHPとは違うんだろうな。

やっぱコミットする人を増やしてドキュメント増やすしかないんだろうな。

noritamanoritama 2008/05/07 23:19 ちっちゃい属性ということで来てみました(^o^)
いつか成長すると思っていたのですが・・・。

bobchinbobchin 2008/05/08 08:47 おひさです〜
ちっちゃい属性はまさにヒットですな。なになにそのままでいてくださいまし〜

gegegengegegen 2008/05/08 23:58 こんにちは!トラックバックありがとうございます。
確かにAkelosのvendorはデフォルトで沢山ファイルが詰まってて
管理に気を使わなければならなそうですね。
PHP Framework Fight一緒に盛り上げて行きましょうー!

あんどれあんどれ 2008/05/13 22:47 池脇千鶴いいですね。
私もやってみました^^/
結果は自分のブログに書いてしまいましたのでそちらを見てニヤニヤしてください。