SugarBean
出典: SugarForum.jp
SugarCRMの根幹を成すクラス。MVCにおけるM(モデル)の部分で、ビジネスロジックの単位となる。すべてのBeanクラスはこのSugarBeanを継承しており、SugarBeanはデータベースを扱うメソッドを提供する。(一種の「抽象クラス」であり、直接使用することはない。継承して使う)
目次 |
基本情報
- ファイル: SugarRoot/data/SugarBean.php
- 継承: なし
- サブクラス: すべてのBeanクラス
解説
Sugarでは、ContactやAccountなど、SugarBeanを継承したクラスのオブジェクトをBeanと呼ぶ。Beanを呼び出すには、
require_once('modules/Contacts/Contact.php');
$obj = new Contact();
if ($obj->retrieve($id)){
echo '呼び出したContactは'.$obj->last_name.'さんです。';
} else {
echo '指定したidをもつレコードは存在しません';
}
といった具合に、newで作成し、retrieve()でデータベースから取り出す(上記はContactクラスの場合)。
新たに作ったオブジェクトを保存する場合は、
require_once('modules/Contacts/Contact.php');
$obj = new Contact();
$obj->last_name = '山田';
$obj->first_name = '太郎';
$obj->save();
echo '作成したContactのidは'.$obj->id.'です。';
このように、プロパティ(フィールド)に値をセットして、save()を呼び出す。
プロパティ
var $new_with_id = false;
Sugarが自動的に生成するユニークIDではなく、IDを自分で指定したいケースがある。例えば、既存システムとの互換性を確保したい場合や、顧客番号など既にユニークであることが保証されている場合など。そういった場合、$this->id = 'ユニークなID' といった具合に、独自IDを指定すれば良い。ただし、idを指定するだけでは、insertではなくupdate扱いになってしまうので、このnew_with_idプロパティを合わせてtrueにしておく必要がある。
var $update_date_modified = true;
レコードの値を一斉に書き換える場合等、更新日時を書き換えたくない場合は、このプロパティをfalseにしてから、save()メソッドを呼べば良い。
(執筆中)
メソッド
retrieve()
主キーを用いて、データベースからレコードを取得。データをBeanの各フィールドにセットする。
- $id=-1 : 主キー
- $encode=true :
- $encode=true :
- 戻り値 : 見つかった場合はオブジェクト自身($this)、見つからなかった場合はnull
retrieve_by_string_fields()
主キー以外のフィールドで検索して、レコードを取得する。
- $fields_array : フィールド名と検索値のペア
- $encode=true :
- 戻り値 : 見つかった場合はオブジェクト自身($this)、見つからなかった場合はnull
get_full_list()
指定した検索条件に合うレコードをすべて取得する。
- $order_by="" :
- $where="" :
- $check_dates=false :
- $show_deleted=0 :
save()
レコードを保存する。既に存在するレコードの場合はUPDATE、新規の場合はINSERTクエリが実行される。
- $check_notify=FALSE :
継承して使用するメソッド
以下は、継承クラスでオーバーライドして使うことが想定されているメソッド。
get_summary_text()
レコードのサマリを返す。主に作業履歴に表示される。
fill_in_additional_list_fields()
fill_in_additional_detail_fields()
get_list_view_data()
リストビューでデータを表示する直前に呼ばれるメソッド。表示内容を調整することが可能。
bean_implements()
主にACLによる制御についてコードする。
- $interface :