FuelPHP Bin
<?php //=================================================== // Models //=================================================== class Model_Query1 extends \Orm\Model { protected static $_table_name = 'query1'; protected static $_properties = array( 'id', 'value', 'name', ); protected static $_has_one = array( 'query2' => array( 'key_from' => 'value', 'model_to' => 'Model_Query2', 'key_to' => 'id', ), ); } class Model_Query2 extends \Orm\Model { protected static $_table_name = 'query2'; protected static $_properties = array( 'id', 'link', 'field', ); protected static $_has_one = array( 'query3' => array( 'key_from' => 'link', 'model_to' => 'Model_Query3', 'key_to' => 'id', ), ); protected static $_belongs_to = array( 'query1' => array( 'key_from' => 'id', 'model_to' => 'Model_Query1', 'key_to' => 'value', ), ); } class Model_Query3 extends \Orm\Model { protected static $_table_name = 'query3'; protected static $_properties = array( 'id', 'last', ); protected static $_belongs_to = array( 'query2' => array( 'key_from' => 'id', 'model_to' => 'Model_Query2', 'key_to' => 'link', ), ); } //=================================================== // Test data //=================================================== CREATE TABLE IF NOT EXISTS `query1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `value` int(11) NOT NULL, `name` varchar(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ; -- -- Dumping data for table `query1` -- INSERT INTO `query1` (`id`, `value`, `name`) VALUES (1, 1, '1-1'), (2, 2, '1-2'), (3, 1, '1-3'), (4, 99, '1-4'), (5, 1, '1-5'), (6, 2, '1-6'), (7, 1, '1-7') CREATE TABLE IF NOT EXISTS `query2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `link` int(11) NOT NULL, `field` varchar(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ; -- -- Dumping data for table `query2` -- INSERT INTO `query2` (`id`, `link`, `field`) VALUES (1, 1, '2-1'), (2, 2, '2-2'), (3, 3, '2-3'), (4, 4, '2-4'), (5, 5, '2-5'), (6, 6, '2-6'), (7, 7, '2-7'); CREATE TABLE IF NOT EXISTS `query3` ( `id` int(11) NOT NULL AUTO_INCREMENT, `last` varchar(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ; -- -- Dumping data for table `query3` -- INSERT INTO `query3` (`id`, `last`) VALUES (1, '3-1'), (2, '3-2'), (3, '3-3'), (4, '3-4'), (5, '3-5'), (6, '3-6'), (7, '3-7'); //=================================================== // Test code //=================================================== $models = Model_Query1::find( 'all', array( 'related' => array( 'query2', 'query2.query3', ), 'where' => array( array('value', 'IN', array('1', '2')) ), 'order_by' => array( 'name' => 'DESC' ), 'limit' => 5, 'offset' => 0 ) ); \Debug::dump($models);return; //=================================================== // Test results //=================================================== Variable #1: (Array, 5 elements) � 7 (Object #39): Model_Query1 � 6 (Object #42): Model_Query1 � 5 (Object #45): Model_Query1 � 3 (Object #46): Model_Query1 � 2 (Object #47): Model_Query1 �