準備済みステートメントに SQL を使用するデータ アクセス オブジェクトには、SQL 変数とバインド変数が初期化された文字列がいくつかあります。その一つは
private $insertQuestionSql = "
INSERT IGNORE INTO bgt.question_models (nodeId, questionId, parentId, state, version,
questionText, userResponseText)
VALUES (NID, QID, PID, ST, V, QT, URT)";
このステートメントは、DAO 関数と同じクラスで宣言され、使用されます
public function createQuestion(QuestionTemplateModel $qt) {
//create database connection and initialize transaction
$connection = Yii::app()->db;
$transaction = $connection->beginTransaction();
try {
$command = $connection->createCommand($this->insertQuestionSql);
Yii では、$connection
は のインスタンスであり、関数を介して のCDbConnection
インスタンスを返します。CDbCommand
createCommand
クラス内でこのプロパティにアクセスしているので、文字列変数にアクセスできるはずです。ここでそれが起こらないのはなぜですか?
完全なエラーは
"Unknown property 'insertQuestionSql' for class 'QuestionDAOTest'."
この動作は、
- SQL 文字列の変更
- 最初の改行文字を削除する
$this->
また、結果を削除するとundefined variable: insertQuestionSql
エラーになります。これは、アクセス修飾子を両方に変更しても発生しpublic
ますprotected