Я пытаюсь также понять концепцию здесь. Чтобы мыслить как ORM в этом отношении, вам нужно начать с таблиц, на которые основные таблицы ссылаются как на связанную информацию.
Итак, в моем мире у меня есть отчет об отходах (модель / отходы / отчет), и существует еще одна таблица со всеми кодами (модель / отходы / коды). поэтому в таблице waste_reports есть столбец с именем code. Это поле может иметь 2E. 2E ничего не значит без таблицы waste_codes. Таблица waste_codes (идентификатор, код, имя).
Я определил это отношение так:
class Model_Waste_code extends ORM {
protected $_primary_key = "code";
protected $_has_one = array(
'waste_report' => array()
);
}
Тогда в моей модели отчета об отходах:
class Model_Waste_report extends ORM
{
protected $_belongs_to = array(
'codes' => array(
'model' => 'waste_code',
'foreign_key' => 'code'
)
);
}
Чтобы показать разные примеры:
public function action_ormwaste() {
$test = ORM::factory('waste_report',76);
if ($test->loaded())
echo $test->codes->name;
echo "<hr noshade />";
$test = ORM::factory('waste_report')->find_all();
foreach($test as $row)
echo $row->codes->name . "<BR>";
}
Будет выводить:
Error with image file (mirrored, etc)
-------------------------------------
Wrong Size
Extra Prints
Error with image file (mirrored, etc)
etc...
Так что, по сути, объединение данных обрабатывается на лету. Я использую Kohana 3.2.
Спасибо, это прояснило меня.