1

model->find 関数を呼び出すと、2 つのモデルの動作が異なる、焼きたての (ベイク コンソールを使用した) プロジェクトがあります。

ユーザーコントローラー

public function index() {
    $this->User->recursive = 0;
    $this->set('users', $this->paginate());
}

言葉コントローラ

public function index() {
    $this->Word->recursive = 0;
    $this->set('words', $this->paginate());
}

クエリ (DebugKit)

SELECT `Word`.`*` FROM `words` AS `Word` WHERE `Word`.`iniziale` = 'A' AND `Word`.`pubblicata` = '1' ORDER BY `Word`.`parola` ASC LIMIT 10
Affected 10 
Num rows 10

どちらの場合も、検査されたクエリは行に影響を与えましたが、paginate() の結果をデバッグすると、WordsController は結果を返しませんが、Users の結果は正しく返されます。

ワードモデルには関係がなく、モデル名をタームに変更してみましたが、同じ結果が得られました。

また、CakePHP コアを 2.1.4 にダウングレードしようとしました。何もない。

この問題に考えられる原因はありますか? Word はある種の予約済みキーワードですか? これはどのようにデバッグできますか?

4

3 に答える 3

5

私はそれを考え出した。

単語テーブル (UTF8) には、àòèéìù のような特殊文字を含むいくつかのテキストがありました。Cake は、これらの文字を含むすべての結果を削除しました。「è」を「e」に置き換えてみたところ、魔法のようにレコードが Cake で利用できるようになりました。

私の5時間の頭痛が他の誰かを助けることを願っています!

于 2012-07-09T08:43:58.493 に答える
2

正しい答えは、受け入れられたものに従います。DB構成でエンコーディングを設定する必要があります:私のconfには次のものがありました:

public $default = array(
     'datasource' => 'Database/Mysql',
                'persistent' => false,
                'host' => 'localhost',
                'login' => 'giuseppe',
                'password' => 'pass',
                'database' => 'db'
                'prefix' => '',
                //'encoding' => 'utf8',

    );

暗号化キーが表示されますか? コメントを外すか、正しいエンコーディングに設定してみてください。

于 2014-10-30T12:20:16.410 に答える