最近codeigniterを利用し始めたので、
codeigniterのモデルからメソッドチェーンでアクティプレコードを利用する方法をご紹介します。
記載する場所は /application/core/MY_Model.php がよろしいかと思います。
class MY_Model extends CI_Model
{
public function __construct() {
parent::__construct();
}
function __call($name, $arguments)
{
call_user_func__array([$this->db, $name], $arguments);
return $this;
}
}
最も簡単に実装してたったこれだけ。
何をしているのか説明。
__call
はマジックメソッドで、そんなメソッドねーよ!という状態の時に呼び出されるものです。call_user_func_arrayで動的にメソッドを実行してます。引数も動的
に取れるすぐれもの!最後に$thisを返します。
使用例です。
$users = $this->User
->select('name', 'password')
->where('id', $id)
->get_all();
と、こんな具合に指定idのUserテーブルから1行で取り出せます!
get_all
は拡張なのでアクティブ・レコードならget
、result_array
等を使ってください。
需要があればそちらも記事にします!
$this->db
にもメソッドがない場合はwarningが出ます。
正しくエラー処理をしたい場合はcall_user_func
がfalseを返すので
trriger_error
または例外を投げて処理をしましょう!
以上です。