サイトカレンダをスキップ

«
2017年 10月
»
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

-

ログイン

ログイン

QRコード

QR code


 掲示板目次 > Magento全般 > カスタマイズ質問 新規投稿 返信投稿
 MySQLにオリジナルのTableを作成した場合
 
sasakure
 2012年1月18日 13:09 JST (参照数 6544回)  
掲示板 Junior
Junior

状態: オフライン


登録日: 2011年10月 3日
投稿数: 32
Magentoのデフォルトテーブルではなく、オリジナルのテーブルを作成した場合について
Modelからの呼び出し方が分からなくて困っています。

下記のようなテーブルとデータを作成します。

PHP Formatted Code

CREATE TABLE `sasakure_test` (
  `sasakure_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Sasakure Id',
  `memo` varchar(255) NOT NULL COMMENT 'Memo',
  PRIMARY KEY (`sasakure_id`)
);
INSERT INTO sasakure_test (memo) VALUES ('KKKKKK');
 


次にSasakureのMymoduleというカスタムモジュールを作成しました。

▼Controller
## app/code/local/Sasakure/Mymodule/controllers/TestController.php ##
PHP Formatted Code

<?php
class Sasakure_Mymodule_TestController extends Mage_Core_Controller_Front_Action
{
  function indexAction()
  {
    $test = Mage::getModel('mymodule/test');
    $test->load(1);
  }
}
 


▼Model
## app/code/local/Sasakure/Mymodule/Model/Test.php ##
PHP Formatted Code

class Sasakure_Mymodule_Model_Test extends Mage_Core_Model_Abstract
{
    protected function _construct()
    {
        $this->_init('mymodule/test');
    }
}
 


▼config.xml (globalタグだけ抜粋)
## app/code/local/Sasakure/Mymodule/etc/config.xml ##
PHP Formatted Code

<global>
  <models>
    <mymodule>
      <class>Sasakure_Mymodule_Model</class>
      <resourceModel>mymodule_mysql4</resourceModel>
    </mymodule>
    <mymodule_mysql4>
      <class>Sasakure_Mymodule_Model_Mysql4</class>
      <entities>
        <test><table>sasakure_test</table></quickpayment>
      </entities>
    </mymodule_mysql4>
  </models>
</global>
 


▼モジュールを有効に
app/etc/modules/Sasakure_Mymodule.xml を作成してカスタムモジュールを作成して有効にしました。


これで [サイトURL]/mymodule/test を叩いたところ
PHP Fatal error: Call to a member function load() on a non-object
app/code/core/Mage/Core/Model/Abstract.php on line 225

となってしまいます。



初歩的な質問となってしまい恐縮ですが、どこに問題があるのかご指摘頂ければと思います。
※ログを出して確認したところ、Modelの_construct()は正常に呼ばれております。

 
プロフィール メール
引用して書き込む
sasakure
 2012年1月18日 13:27 JST  
掲示板 Junior
Junior

状態: オフライン


登録日: 2011年10月 3日
投稿数: 32
すみません。補足です。

コントローラーでload()する際に
$test->load(1, 'sasakure_id'Wink; とフィールド名を指定しても同じエラーでした。。

 
プロフィール メール
引用して書き込む
sasakure
 2012年1月18日 18:12 JST  
掲示板 Junior
Junior

状態: オフライン


登録日: 2011年10月 3日
投稿数: 32
解決していませんが進捗がありましたので報告します。

config.xmlの <mymodule_myssql4> で指定しているクラスがないのがいけないのかなと思い下記のモデルを追加しました。

▼Model
## app/code/local/Sasakure/Mymodule/Model/Mysql4/Test.php ##
PHP Formatted Code

<?php
class Sasakure_Mymodule_Model_Mysql4_Test extends Mage_Core_Model_Mysql4_Abstract
{
    protected function _construct() {
        $this->_init('mymodule/test', 'sasakure_id');
    }
}
 


すると先ほどまでのFatal errorは出なくなりましたが、
画面上にError log record numberが表示されました。

確認したところ
Can't retrieve entity config: mymodule/test
という事なのでconfig.xmlの書き方に誤りがある気がしています。

 
プロフィール メール
引用して書き込む
sasakure
 2012年1月18日 18:31 JST  
掲示板 Junior
Junior

状態: オフライン


登録日: 2011年10月 3日
投稿数: 32
すみません。解決しました。
config.xmlのtestタグの閉じタグに誤りがありました。
下記のように修正したところ、エラーが発生しなくなりました。
PHP Formatted Code

      <entities>
        <test><table>sasakure_test</table></test>
      </entities>
 


大変お騒がせしました。

 
プロフィール メール
引用して書き込む
内容生成: 3.97 秒
新規投稿 返信投稿


通常 通常
注目トピック 注目トピック
ロック済 ロック済
新着 新着
注目トピック 新着 注目トピック 新着
ロック済トピック 新着 ロック済トピック 新着
ゲストユーザの投稿を見る 
ゲストユーザ投稿可能 
HTML許可 
バッドワードをチェック