0

これは私のコントローラーです

ユーザー詳細.php

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Userdetails extends Controller {

    public function action_index() {
        $view = new View('userdetails/index');
        $this->response->body($view);
    }
     public function action_add() {
        $userdetails = new Model_Userdetails();         
        $view = new View('userdetails/adddetails');
        $view->set("userdetails", $userdetails);         
        $this->response->body($view);
    }

モデルは

ユーザー詳細.php

<?php defined('SYSPATH') or die('No direct script access.');

class Model_Userdetails extends ORM {

}

ユーザー情報.sql

CREATE TABLE `kohana`.`userinfo` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `first_name` varchar(100) DEFAULT NULL,
  `last_name` varchar(100) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `description` text,
  PRIMARY KEY (`id`)
);

私は新しくphpとkohanaを学んでいます。kohana 3.2バージョンを使用しています。このチュートリアルに従って、データベース内のデータを作成、編集、更新、および削除しています。上記のコードで試しましたが、このエラーが発生しています

"Database_Exception [ 1146 ]: Table 'kohana.userdetailses' doesn't exist [ SHOW FULL COLUMNS FROM `userdetailses` ]"   

これを解決するには助けが必要です。

4

1 に答える 1

1

が設定されていない場合、Kohana はテーブル名を推測します$_table_name。ほとんどの場合、モデルは単一のオブジェクトを記述し、テーブルはそれらの多くを記述するため、モデル名を複数形にします。

編集

あなたが実際にテーブルuserinfoとモデルに名前を付けているのを見ましたuserdetails。それがあなたが望むものなら:

class Model_Userdetails {

    protected $_table_name = 'userinfo';

    ........
}

または、モデルの名前を に変更するModel_Userinfoか、テーブルの名前をuserdetailsandに変更します。

---編集終了---

あなたの場合、次のことが最も適切と思われます。

class Model_Userdetails {

    protected $_table_name = 'userdetails';

    ........
}

Model_Userdetailもちろん、テーブル名が次のように推測されるように、クラスの名前を に変更することもできます。userdetails

更新

Kohanaはこれら (すなわちsth)も推測する必要がありますが、以下のコメントで説明されているように、これによりエラー解決される場合があります。SHOW FULL COLUMNS FOR tableproperty not found

protected $_table_columns = array(
    'id'        => array('type' => 'int'),
    'firstname' => array('type' => 'string'),
    ....... // repeat for all columns
);

アップデート:

PHP コードにタイプミスがあります: deScription. とにかく、テーブルの列を定義するのは良い習慣です。これにより、モデルが初めて初期化されるたびに余分なクエリを節約できます。配列からパラメーターを取得できるいくつかの検証機能に加えて (たとえば、descriptionof 型のTEXT長さは多かれ少なかれ制限されていませんが、2000 文字に制限したい場合があります)。

于 2013-08-21T09:55:25.470 に答える