FuelPHP ORMで取得(select)した後の処理

findやqueryなど、クエリを発行するところまではあっても、
その後どう処理するかの記述が少ないと思ったのでメモ。

<?php

/*
mysql > show create table test;
CREATE TABLE `test` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(16) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

mysql > show create table hoge;
CREATE TABLE `hoge` (
  `fuga` int(11) DEFAULT NULL,
  `bar` varchar(16) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

*/

// phpの中
$result = Model_Test::find(1);
echo $result->id;
echo $result->name;

// Twigの中
$view = View::forge('test_view.twig');
$view->result = $result;
return Response::forge($view);

{% for row in result %}
{{ row.id }}
{{ row.name }}
{% endfor %}

// リレーションを使ってselectしたとき
$result = Model_Test->find('all', array(
  'related' => array('hoge'),
));

foreach ( $result as $row )
{
  echo $row->id;
  echo $row->name;

  // リレーションキーでオブジェクト取得
  $hoge = $row->hoge;
  echo $hoge->fuga;
  echo $hoge->bar;
}

// リレーションをTwigの中で展開するときはドットでつないであげればいい
{% for row in result %}
{{ row.hoge.fuga }}
{{ row.hoge.bar }}
{% endfor %}