以下、実験結果です。
テーブルを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