2

データベースを使用しないアプリケーションを開発しようとしていますが、まだいくつかのモデルがあります。

最初の問題:Cakeはデータベースの構成(APP / Lib / Cake / Model / ConnectionManager.php、69行目)を探しますが、ファイルConfig/database.phpをインクルードしようとします。

ファイルが存在しない場合、2つの警告が表示されます。存在する場合(完全に空であっても)、すべて問題ありません。モデルがなくてもこれが起こることを明確にしたいと思います。

2番目の問題:モデルを使用しようとすると、次のエラーが発生します。

Missing Datasource Configuration
Error: The datasource configuration default was not found in database.php.

これは、Config / database.phpファイルが存在するかどうか、ファイルが存在しないかどうかに関係なく発生します。

最後に、モデル(AppModelを含む)のプロパティ$ useTableがfalseに設定されていることを指定しますが、違いはないようです。

しかし、データベースを使用するアプリケーションで、データベースを使用しないモデルがいくつかある場合(ただし、アプリ全体でデータベースを使用する場合)、すべてが正しく機能することに気付きました。

私はこれが解決策を提案するものを見つけました。それはウェブ上で見つけられる解決策です。

しかし、以下のコメントで、私はロレンツォが言っていることを読みました:

これはまったく意味がありません。CakePHP2.0は、要求しない限り、datbase接続を実行しようとはしません。

おそらく、CakePHPはクエリを実行しませんが、データベースを構成する必要があります。そうですか?または私は何かを逃した?

ありがとうございました。

4

1 に答える 1

4

考えられる原因

ただし、CakePHP は実際に必要になるまでデータベースに接続しようとしません。

  • データベースを使用していない場合でも、app/Config/database.php ファイルは常に存在する必要があります。ただし、さまざまな接続を使用していない場合は、それらを「構成」する必要はありません。
  • モデルがビヘイビアを使用している場合、ビヘイビアによってデータベース呼び出しが行われ、CakePHP がデータベースに接続しようとする可能性があります。
  • Model クラス内のさまざまなメソッドがデータベースへの接続を作成します (たとえば、「スキーマ」または「columnType」を要求します。
  • 存在しないモデル メソッドはマジック__call()メソッドにマップされます。このメソッドは、最初に動作が呼び出しを処理できるかどうかを確認し、そうでない場合はデータベースを呼び出します。たとえば、使用$this->Mymodel->doSomething()すると、CakePHP はデータベース接続を開いてデータベースで実行しようとしdoSomethingます。
  • モデルが存在しない場合、CakePHP はモデルを作成します。基本的には、データベースのスキーマ情報を使用してModelのインスタンスを作成し、接続を開きます。

class PostsController extends AppController {
    // This controller does not use a Model
    public $uses = false;

    public function index() {
        // CakePHP will construct a 'Post' model here
        $this->Post->find('something');
    }

}

データベースが使用されていない場合でも、データソース

そうは言っても。ほとんどの場合、モデルでデータソースを使用するのが最善です。データソースはデータベースである必要はありませが、たとえば、Twitter Feedまたは staticである場合もありますArray()

データソースがあると、ほとんどのタスクが簡素化されます (たとえばfind(....)、データベースであるかどうかに関係なく、ソースからデータを取得するだけで済みます。

于 2013-03-22T13:21:49.457 に答える