ホームページ >バックエンド開発 >PHPチュートリアル >ThinkPHP 3.0 の parseFieldsMap に関連する問題

ThinkPHP 3.0 の parseFieldsMap に関連する問題

WBOY
WBOYオリジナル
2016-06-13 13:41:54909ブラウズ

ThinkPHP 3.0 parseFieldsMap の問題
データベース内のフィールドは uid、uname
ページ フォームの名前はそれぞれ id と name です

モデル コード:

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
    protected $_map = array(
        'id' => 'uid',
        'name' => 'uname',
    );



アクション コード:
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
        $model = M('Demo');
        $list = $model -> select();
        print_r($list);
        $list = $model -> parseFieldsMap($list);
        echo '<br/><br/>';
        print_r($list);



出力結果は同じです
どちらも

配列( [0] => Array ( [uid] => 1 [uname] => Test) )


問題はここにあります:
公式声明によると、parseFieldsMap の後転送されます
最後に、出力 $list は

Array ( [0] => Array ( [id] => 1 [name] => Test) )

となるはずです右?
インターネット上でどこを探しても見つかりません
知っている人がいたら、遠慮なく教えてください。

-----解決策--------------------------------
実際には、M と D を区別する必要があります。M の方法は、自分で定義したモデル ファイルを読み込む方法ではありませんが、$_map は自分で作成したモデル ファイルに定義されているため、次のように呼び出す必要があります。 $list = D('デモ') -> parseFieldsMap($list) ;
------解決策------------------
これは parseFieldsMap メソッドの定義からわかります:
は 1 次元配列、つまり
Array ( [uid] => 1 [uname] => test)
に対してのみ機能します。
配列 ( [id] => 1 [name] => test)
PHP コード
 になります
    /**+---------------------
     * プロセスフィールドマッピング
     +---------------------
     * @アクセスパブリック
     +---------------------
     * @param array $data 現在のデータ
     * @param integer $type タイプ 0 書き込み 1 読み取り
     +---------------------
     * @return 配列
     +---------------------*/
    パブリック関数 parseFieldsMap($data,$type=1) {
        // フィールドマッピングをチェックする
        if(!empty($this->_map)) {
            foreach ($this->_map as $key=>$val){
                if($type==1) { // 読み取り
                    if(isset($data[$val])) {
                        $data[$key] = $data[$val];
                        unset($data[$val]);
                    }
                }それ以外{
                    if(isset($data[$key])) {
                        $data[$val] = $data[$key];
                        unset($data[$key]);
                    }
                }
            }
        }
        $data を返します。
    <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。