「なぜORM/ActiveRecordの使用が生のSQLよりも優れているのか」という質問に対する答えは、「なぜMVCまたはプログラミングパターンを使用する必要があるのか」と同じです。それは少し哲学的な質問なので、Googleを使用してそれらに関する多くの答えを見つけることができます。
ビジネスモデルとリソースモデルを作成する必要があります。また、モジュールなどのフォルダーと各モデルのクラスの_constructメソッドでconfig.xmlファイルを使用して、リソースモデルをビジネスモデルに割り当てる必要があります。
たとえば、My_Module_Model_BussinesのビジネスクラスとリソースクラスMy_Module_Model_Resource_Bussinesがあります。これらのクラスの最小の実現(そしてそうでなければならない)は
最初のもの:
class My_Module_Model_Business extends Mage_Core_Model_Abstract
{
protected function _construct()
{
$this->_init('my_module/business');
}
}
2番目:
class My_Module_Model_Resource_Business extends Mage_Core_Model_Mysql4_Abstract
{
protected function _construct()
{
$this->_init('my_module/table', 'id');
}
}
ここで、各クラスのメソッド_initの最初のパラメーターはXML構成のxpathであり、2番目のパラメーター(リソースクラス内)は主キー名です。
また、config.xmlには、次のようなものが必要です。
<?xml version="1.0"?>
<config>
<modules>
<My_Module>
<version>YOUR_VERSION_OF_MODULE(e.g. 0.0.1)</version>
</My_Module>
</modules>
<global>
<models>
<my_module>
<class>My_Module_Model</class>
<!-- name of the resource model node -->
<resourceModel>my_module_resource</resourceModel>
</my_module>
<my_module_resource>
<class>My_Module_Model_Resource</class>
<entities>
<table>
<table>your_table_name</table>
</table>
</entities>
</my_module_resource>
</models>
<!-- another config nodes -->
</global>
</config>
その後、次のようなものを使用できます。
Mage::getModel('my_module/business')->setFirstField('some data')
->setTotal('100.1')
->setOrderId(10)
->save();
1.5.1よりも新しいバージョンのMagentoを使用する場合は、クラス名のMysql4をResourceに変更する必要があります。