私は、訂正であると私が信じる2つの調整を除いて、ほぼ一言一句ドキュメントに従っています。
最初の調整:冗長性を排除しDIRECTORY_SEPARATOR
ますsystem/application/doctrine.php
:
//this produces "...system/application//fixtures"
$config = array('data_fixtures_path' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '/fixtures',
//Replaced with:
$config = array('data_fixtures_path' => dirname(__FILE__) . DIRECTORY_SEPARATOR . 'fixtures',
結果のパスは正しく表示されます。
2番目の調整:生成されたモデル(たとえばmodels/User.php
)は、拡張するベースモデルをロードしていないようです。そのため、次のように各モデルにDoctrine_Record
明示的な呼び出しを追加します。require()
require('generated/BaseUser.php');
class User extends BaseUser { ... }
だから、私の現在の問題:初めてテーブルを構築するときになると:
$ ./doctrine build-all-reload
build-all-reload - Are you sure you wish to drop your databases? (y/n)
y
build-all-reload - Successfully dropped database for connection named 'mydb'
build-all-reload - Successfully created database for connection named 'mydb'
build-all-reload - Created tables successfully
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mydb.user' doesn't exist
Doctrineは、テーブルを空にしたり、テーブルを削除したり、データベースを削除したり、データベースを作成したりしているようですが、なぜテーブルが作成されないのか理解できません。はっきりと書かれていますCreated tables successfully
が、SHOW TABLES;
「データベースにテーブルが見つかりません」と返されます。
Doctrineは私と同じMySQLユーザーを使用していますALL PRIVILEGES
。
Doctrineがテーブルを作成できない理由はありますか?うまくいけば、私はただ盲目であるか、そして/または愚かです。
または、yamlスキーマまたはこの問題をデバッグするために自分で実行できるモデルに基づいてSQL CREATEステートメントのファイルを作成する方法はありますか?