> PHP 프레임워크 > ThinkPHP > ThinkORM에 새로 추가된 가상 모델 기능 분석

ThinkORM에 새로 추가된 가상 모델 기능 분석

풀어 주다: 2021-08-09 09:16:42
앞으로
2414명이 탐색했습니다.

이 글은 ThinkORM에 새로 추가된 가상 모델 기능을 소개하고 분석하기 위해 thinkphp Framework튜토리얼 칼럼에서 제공하는 글입니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

최신 버전의 ThinkORM에는 가상 모델 기능이 추가되었습니다. 이 기능은 ThinkPHP 버전 3.2에 등장했지만 새 버전의 가상 모델 기능이 더욱 강력해졌습니다.

이전에는 가상 모델 작업이 필요한 경우 모델 클래스가 Model 클래스를 상속한 다음 자체 비즈니스 로직을 캡슐화할 수 없었지만 일부 요구 사항은 충족할 수 있었지만 getter, 수정자 및 모델 관련 기능을 구현할 수 없었습니다. as :

<?php
namespace app\model;
class User
{
    public function getInfo()
    {
        // 业务逻辑代码
    }
}
로그인 후 복사

새 버전은 가상 모델 강화에 중점을 두고 있습니다. 데이터는 메모리에만 저장할 수 있으며, 데이터는 인스턴스화를 통해서만 생성할 수 있습니다. 가상 모델은 getter, 모델 이벤트를 포함한 모델의 대부분의 기능을 유지할 수 있습니다. , 반면에 Association 작업도 단위 테스트에 더 편리합니다.

가상 모델을 사용하려면 모델을 정의할 때 Virtual 특성만 도입하면 됩니다. 예:

<?php
namespace app\model;
use think\Model;
use think\model\concern\Virtual;
class User extends Model
{
    use Virtual;
    public function getInfo()
    {
        // 业务逻辑代码
    }
    public function getStatusAttr($value)
    {
        $status = [-1=>&#39;删除&#39;,0=>&#39;禁用&#39;,1=>&#39;正常&#39;,2=>&#39;待审核&#39;];
        return $status[$value];
    }
    public function setNameAttr($value)
    {
        return strtolower($value);
    }
    public function blog()
    {
        return $this->hasMany(&#39;Blog&#39;);
    }
}
로그인 후 복사

데이터베이스에 해당 사용자 테이블이 필요하지 않지만 관련 데이터 작업을 계속 수행할 수 있습니다. 다음은 몇 가지 간단한 예입니다.

// 创建数据
$data = [
    &#39;id&#39;      =>    8,
    &#39;name&#39;    =>    &#39;Think&#39;,
    &#39;status&#39;  =>    1,
];
$user = User::create($data);
// 获取数据 (支持获取器)
echo $user->name; // 输出 think
// 修改数据 (支持修改器)
$user->name = &#39;ThinkPHP&#39;; // 实际数据变成 thinkphp
// 保存数据到内存 并且调用模型事件
$user->save();
// 获取关联博客数据
$blog = $user->blog()->limit(3)->select();
// 删除数据(同时删除关联博客数据)
$user->together([&#39;blog&#39;])->delete();
로그인 후 복사

가상 모델에는 실제 데이터 테이블이 없으므로 쿼리 작업을 수행할 수 없습니다. 다음 코드에서는 예외가 발생합니다.

User::find(1);
// 会抛出下面的异常
// virtual model not support db query
로그인 후 복사

가상 모델은 자동 타임스탬프 기능을 지원하지 않습니다. 시간 필드 형식화), 시간 필드가 필요한 경우 인스턴스화 중에 전달되어야 합니다.

getter, modifier 및 모델 이벤트를 정의하면 시간이 있을 때 테스트할 수 있습니다.

관련 추천: 최신 10개 thinkphp 비디오 튜토리얼

위 내용은 ThinkORM에 새로 추가된 가상 모델 기능 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:thinkphp
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿