ThinkPHP의 실례화 대상 M()과 D()의 차이, select와find의 차이

4930 단어 thinkphp
원문: ThinkPHP의 실례화 대상 M()과 D()의 차이, select와find의 차이
1. ThinkPHP에서 실례화된 대상 M()과 D()의 차이
실례화 과정에서 D방법과 M방법을 자주 사용하는데 이 두 방법의 차이점은 M방법 실례화 모델은 사용자가 모든 데이터 테이블에 모델 종류를 정의할 필요가 없고 D방법이 정의된 모델 종류를 찾지 못하면 자동으로 M방법을 호출한다는 것이다.쉽게 말하자면 M 실례화 매개 변수는 데이터베이스의 표 이름이다.D는 당신이 모델 폴더 아래에 직접 만든 모델 파일을 실례화합니다
예를 들어 $user = new UserModel();
$user = D ('user')와 같습니다.
하면, 만약, 만약...
예를 들어 $Demo = new Model();
그러면 $Demo=M()과 같습니다.
D와 M의 차이는 주로 다음과 같다. M 방법은 모델 클래스 파일을 만들 필요가 없고 M 방법은 모델 클래스를 읽을 수 없기 때문에 기본적으로 자동 검증은 무효이지만 동적 값을 부여하는 방식으로 실현할 수 있고 D 방법은 반드시 모델 클래스를 만들어야 한다.우리는 다음 두 가지 방법으로 데이터 테이블의 매핑 대상을 만들 수 있다. 첫 번째는 $Test=D('Test') 두 번째: $Test=new 모델('Test')이다. 비록 이 두 가지 모두 데이터에 대해 select, insert, delete,udpate 조작을 할 수 있지만 데이터 검증에 있어 크게 다르다. 첫 번째 방식으로 하나의 모델에 데이터 검사 기능을 실례하면제목을 입력하십시오. (이것은 tp가 제공하는 자동 검증 기능입니다. 물론 해당하는 모델에 검증 조건을 정의해야 합니다.)두 번째를 사용하면 없어집니다.. 그리고 한 가지 차이점은 $trueTableName을 사용한 후 $test=d('test')를 사용해야 합니다. 검색한 것은test표이고 $test=m('test')를 사용한 것은 모두 검색한 데이터 변이think 임을 나타냅니다test.thinkphp2.0 버전 테스트에서 이와 같은 문제가 발생했다. D는 모델 파일을 기반으로 한 모델을 실례화하는 것이다.M은 해당 모델 파일이 존재하지 않아도 모델 대상을 직접 실례화하는 방법(ThinkPHP 기본 클래스)을 통해 동적으로 실례화한다.
다음은 흔히 볼 수 있는 알파벳 방법: ========================================================================================A 신속 실례화 액션 라이브러리 B 실행행위 클래스 C 구성 매개 변수 액세스 방법 D 신속 실례화 모텔 라이브러리 F 신속 단순 텍스트 데이터 액세스 방법 L 언어 참수 액세스 방법 L 언어 참수 수 수 수 있는 높은 성능 모델 신속 호출 성모 모 모 모 모 모 신속 호출 신속 신속 호출 신속 성성성성모 수수수수모 모모은 AAction URRRRRRR방향 지정 방법 W빠른 Widget 출력 방법 D 함수는 현재 프로젝트의 Lib/model 아래 모듈을 실례화합니다.이 모듈이 존재하지 않으면 실례화된 모델의 대상을 직접 되돌려줍니다. (의미는 M () 함수와 같습니다.)M은 모델 객체를 인스턴스화하는 경우에만 반환됩니다.그것의 $name 매개 변수는 데이터베이스에 대한 동작을 데이터베이스 이름으로 처리합니다.
2.thinkphp의 select와find의 차이
thinkphp는 비교적 좋은 php 개발 프레임워크로 MVC 구조를 비교적 신속하게 개발할 수 있는 관리 시스템입니다. 우리는 select()와find() 방법을 사용해야 합니다. 두 가지 방법 모두 데이터 집합의 그룹을 되돌릴 수 있지만 어떤 차이가 있습니까?먼저 내 코드 대비를 살펴보자.
$tech=M('techlevel','HR_CS_','DB_CONFIG2'); 

$Data=$tech->where('id=1')->find(); 

dump($Data); 

$Data=$tech->where('id=1')->select(); 

dump($Data);

결과는 다음과 같습니다.
array(6) { 

  ["ID"] => int(1) 

  ["TechLevel"] => string(2) "10"

  ["Remark"] => string(4) "??"

  ["CreateDate"] => string(19) "2013-03-14 15:14:38"

  ["CreateBy"] => string(5) "admin"

  ["ROW_NUMBER"] => string(1) "1"

} 

    

array(1) { 

  [0] => array(6) { 

    ["ID"] => int(1) 

    ["TechLevel"] => string(2) "10"

    ["Remark"] => string(4) "??"

    ["CreateDate"] => string(19) "2013-03-14 15:14:38"

    ["CreateBy"] => string(5) "admin"

    ["ROW_NUMBER"] => string(1) "1"

  } 

}

 
위의 코드를 보면find()는 1차원 그룹을 되돌려주고,select()는 2차원 그룹을 되돌려주기 때문에 값을 받을 때 다릅니다.
1차원 그룹 수치는 $data["TechLevel"],
2D 배열 값을 $data[0[TechLevel]로 가져옵니다.
두 가지 중요한 차이점이 하나 더 있다. 데이터를 읽는 작업은 데이터 집합과 유사하다. select가 사용할 수 있는 모든 일관된 작업 방법도find 방법에 사용할 수 있다. 차이점은find 방법은 최대 한 개의 기록만 되돌려줄 수 있기 때문이다. (데이터 오류가 없으면) 이 limit 방법은find 조회 작업에 무효이기 때문이다.처음에 이 용법을 이해하지 못했기 때문에 하루 동안 디버깅을 해도 가치가 없다. 마지막에dump 방법이 있어야만 두 가지 방법의 차이점을 볼 수 있다!

좋은 웹페이지 즐겨찾기