이 글은 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=>'删除',0=>'禁用',1=>'正常',2=>'待审核']; return $status[$value]; } public function setNameAttr($value) { return strtolower($value); } public function blog() { return $this->hasMany('Blog'); } }
데이터베이스에 해당 사용자 테이블이 필요하지 않지만 관련 데이터 작업을 계속 수행할 수 있습니다. 다음은 몇 가지 간단한 예입니다.
// 创建数据 $data = [ 'id' => 8, 'name' => 'Think', 'status' => 1, ]; $user = User::create($data); // 获取数据 (支持获取器) echo $user->name; // 输出 think // 修改数据 (支持修改器) $user->name = 'ThinkPHP'; // 实际数据变成 thinkphp // 保存数据到内存 并且调用模型事件 $user->save(); // 获取关联博客数据 $blog = $user->blog()->limit(3)->select(); // 删除数据(同时删除关联博客数据) $user->together(['blog'])->delete();
가상 모델에는 실제 데이터 테이블이 없으므로 쿼리 작업을 수행할 수 없습니다. 다음 코드에서는 예외가 발생합니다.
User::find(1); // 会抛出下面的异常 // virtual model not support db query
가상 모델은 자동 타임스탬프 기능을 지원하지 않습니다. 시간 필드 형식화), 시간 필드가 필요한 경우 인스턴스화 중에 전달되어야 합니다.
getter, modifier 및 모델 이벤트를 정의하면 시간이 있을 때 테스트할 수 있습니다.
관련 추천: 최신 10개 thinkphp 비디오 튜토리얼
위 내용은 ThinkORM에 새로 추가된 가상 모델 기능 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!