July 14, 2012

FuelPHPでMySQLのビューライクなModel_Crud

MySQLのビューみたいなニュアンスのModel_Crudを試してみました。

以下、実験結果です。

テーブルを2つ、適当に用意します。

create table parents
(
    id int not null auto_increment,
    parent_name varchar(255) not null,
    parent_gender enum('male','female') not null,
    primary key (id)
);

create table children
(
    id int not null auto_increment,
    parent_id int not null,
    child_name varchar(255) not null,
    child_gender enum('male','female') not null,
    primary key (id)
);


Modelを用意します。(Model_Crudを継承。)
app/classes/model/dummyview.php

<?php class Model_DummyView extends \Model_Crud {     public static function get() {         $sql = 'select                     c.child_name,                     c.child_gender,                     p.parent_name,                     p.parent_gender                 from                     children as c                 inner join parents as p on p.id = c.parent_id';         return DB::query($sql)->as_object(get_class())->execute()->as_array();     } }

コントローラ等、任意の場所でgetメソッドを呼んで出力してみます。
Debug::dump(Model_DummyView::get());

メリットは
* as_objectで自身にデータをセットすることで、FuelPHP流の処理を継続できること。
* $_propertiesが不要なので、1つのモデルで複数のメソッドを用意できること。

以下の場合に、出番があるかも。
* 複雑なjoin等を必要とする。
* 表示にしか使わない。

No comments:

Post a Comment