ホームページ > PHPフレームワーク > ThinkPHP > tp5.0のモデルタイプ変換の問題

tp5.0のモデルタイプ変換の問題

藏色散人
リリース: 2019-08-19 14:22:38
転載
2673 人が閲覧しました

tp5.0のモデルタイプ変換の問題

tp5.0のモデル型変換問題

data()→save()を使用する場合、型変換を実現するには、データ関数の 2 番目のパラメーターを true に設定する必要があります

class User extends Model 
{
    protected $type = [
        'status'    =>  'integer',
        'score'     =>  'float',
        'birthday'  =>  'datetime',
        'info'      =>  'array',
    ];
}
ログイン後にコピー

1。型変換は可能です

$user = new User;
$user->status = '1';
$user->score = '90.50';
$user->birthday = '2015/5/1';
$user->info = ['a'=>1,'b'=>2];
$user->save();
var_dump($user->status); // int 1
var_dump($user->score); // float 90.5;
var_dump($user->birthday); // string '2015-05-01 00:00:00'
var_dump($user->info);// array (size=2) 'a' => int 1  'b' => int 2
ログイン後にコピー

2。型変換は不可能です

$user = new User;
$insert ['status'] = '1';
$insert ['score'] = '90.50';
$insert ['birthday'] = '2015/5/1';
$insert ['info'] = ['a'=>1,'b'=>2];
$user->data($insert)->save();
var_dump($user->status); // string '1';
var_dump($user->score); // string '90.5';
var_dump($user->birthday); // string '2015/5/1'
var_dump($user->info);// array (size=2) 'a' => int 1  'b' => int 2
ログイン後にコピー

3. 型変換が可能

$user->data($insert, true)->save();
ログイン後にコピー
Model.php
......
  public function data($data, $value = null)
    {
        if (is_string($data)) {
            $this->data[$data] = $value;
        } else {
            // 清空数据
            $this->data = [];
            if (is_object($data)) {
                $data = get_object_vars($data);
            }
            if (true === $value) {
                // 数据对象赋值
                foreach ($data as $key => $value) {
                    $this->setAttr($key, $value, $data);
                }
            } else {
                $this->data = $data;
            }
        }
        return $this;
    }
.......
ログイン後にコピー

型変換は setAttr 関数を介してのみ実行できます

この記事は、ThinkPHP フレームワークの技術記事コラム:http:// www.php.cn/phpkj/thinkphp/

以上がtp5.0のモデルタイプ変換の問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート