Yii 프레임 워 크 에서 데이터베이스(databases)를 사용 하 는 방법 예시

본 고의 실례 는 Yii 프레임 워 크 가 데이터베이스(databases)를 사용 하 는 방법 을 설명 한다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
데이터베이스 연결 설정
시작 하기 전에 PHP PDO 확장 과 사용 하 는 데이터베이스 의 PDO 드라이브(예 를 들 어 MySQL 의 pdo_mysql)가 설치 되 어 있 는 지 확인 하 십시오.관계 형 데이터 베 이 스 를 사용 하 는 데 있어 서 이것 은 기본 적 인 요구 이다.
드라이브 와 확장 설 치 를 사용 할 수 있 으 면 config/db.php 을 열 어 데이터베이스 설정 에 대응 하 는 설정 파 라 메 터 를 수정 합 니 다.이 파일 은 기본적으로 이 내용 을 포함 합 니 다:

<?php
 
return [
  'class' => 'yii\db\Connection',
  'dsn' => 'mysql:host=localhost;dbname=yii2basic',
  'username' => 'root',
  'password' => '',
  'charset' => 'utf8',
];
config/db.php 은 파일 기반 의 전형 적 인 배치 하 다. 도구 이다.이 파일 은 데이터베이스 연결 yii\db\Connection 의 생 성과 초기 화 파 라미 터 를 설정 하 였 으 며,응 용 된 SQL 조 회 는 바로 이 데이터 베 이 스 를 기반 으로 합 니 다.
위 에 설 정 된 데이터베이스 연결 은 응용 프로그램 에서 Yii::$app->db 표현 식 으로 접근 할 수 있 습 니 다.
정보:config/db.php 은 응용 프로필 config/web.php 에 포함 되 고 후 자 는 전체 활용 단어 참조 을 어떻게 초기 화 하 는 지 지정 합 니 다.배치 하 다. 장 을 참고 하여 더 많은 정 보 를 알 아 보 세 요.
지원 하 는 데이터 베 이 스 를 묶 지 않 은 Yii 를 사용 하려 면 다음 플러그 인 을 볼 수 있 습 니 다.
  • Informix
  • IBM DB2
  • Firebird
  • 이벤트 기록 만 들 기
    활동 기록 클래스 의 Country 을 계승 하여 models/Country.php 파일 에 놓 고 country 표 의 데 이 터 를 대표 하고 읽 습 니 다.
    
    <?php
     
    namespace app\models;
     
    use yii\db\ActiveRecord;
     
    class Country extends ActiveRecord
    {
    }
    
    Country 류 는 yii\db\ActiveRecord 에서 계승 되 었 다.너 는 안에 어떤 코드 도 쓸 필요 가 없다.지금 처럼 Yii 는 클래스 이름 에 따라 해당 하 는 데이터 테이블 이름 을 추측 할 수 있다.
    정보:유형 명 과 데이터 표 명 이 직접적 으로 대응 하지 못 하면 tableName() 방법 으로 관련 표 명 을 명시 적 으로 지정 할 수 있 습 니 다.Country 종 류 를 사용 하면 country 표 데 이 터 를 쉽게 조작 할 수 있 습 니 다.이 코드 와 같 습 니 다.
    
    use app\models\Country;
     
    //    country         name   
    $countries = Country::find()->orderBy('name')->all();
     
    //       “US”   
    $country = Country::findOne('US');
     
    //    “United States”
    echo $country->name;
     
    //    name   “U.S.A.”           
    $country->name = 'U.S.A.';
    $country->save();
    
    정보:활동 기록 은 대상 을 대상 으로 기능 이 강 한 방문 과 데이터 베 이 스 를 조작 하 는 방식 이다.너 는 활동 기록 장 에서 더 많은 정 보 를 알 수 있다.그 밖 에 다른 원생 적 인 데이터 액세스 대상 이 라 고 불 리 는 방법 으로 데이터 베 이 스 를 조작 할 수 있다.
    생 성 동작
    최종 사용자 에 게 국가 데 이 터 를 표시 하기 위해 서 는 작업 을 만들어 야 합 니 다.이전 소절 에서 파악 한 site 컨트롤 러 에 비해 국가 와 관련 된 모든 데 이 터 를 위 한 컨트롤 러 를 새로 만 드 는 것 이 합 리 적 입 니 다.새 컨트롤 러 이름 은 CountryController 이 고 그 중에서 index 작업 을 만 듭 니 다.다음 과 같 습 니 다.
    
    <?php
     
    namespace app\controllers;
     
    use yii\web\Controller;
    use yii\data\Pagination;
    use app\models\Country;
     
    class CountryController extends Controller
    {
      public function actionIndex()
      {
        $query = Country::find();
     
        $pagination = new Pagination([
          'defaultPageSize' => 5,
          'totalCount' => $query->count(),
        ]);
     
        $countries = $query->orderBy('name')
          ->offset($pagination->offset)
          ->limit($pagination->limit)
          ->all();
     
        return $this->render('index', [
          'countries' => $countries,
          'pagination' => $pagination,
        ]);
      }
    }
    
    위의 코드 를 controllers/CountryController.php 파일 에 저장 하 세 요.index 작업 은 활동 기록 Country::find() 방법 을 호출 하여 조회 문 구 를 생 성하 고 country 표 에서 모든 데 이 터 를 되 찾 았 다.각 요청 이 되 돌아 오 는 국가 수 를 제한 하기 위해 조 회 는 yii\data\Pagination 대상 의 도움 을 받 아 페이지 를 나눈다.Pagination 대상 의 사명 은 주로 두 가지 가 있다.
  • 은 SQL 조회 문 구 를 위해 offsetlimit 종 구 를 설정 하여 모든 요청 이 한 페이지 의 데이터 만 되 돌려 주 는 것 을 확보 합 니 다(이 예 에서 각 페이지 는 5 줄 입 니 다).
  • 보기 에 페이지 목록 으로 구 성 된 페이지 를 표시 합 니 다.이 점 은 뒤의 단락 에서 설명 합 니 다.
  • 코드 끝 에 index 작업 은 index 이라는 보 기 를 렌 더 링 하고 국가 데이터 와 페이지 정 보 를 전달 합 니 다.
    보기 만 들 기 views 디 렉 터 리 아래 country 이라는 하위 디 렉 터 리 를 먼저 만 듭 니 다.이 디 렉 터 리 는 country 컨트롤 러 가 렌 더 링 한 모든 보 기 를 저장 합 니 다.views/country 디 렉 터 리 아래 index.php 이라는 보기 파일 을 만 듭 니 다.내용 은 다음 과 같 습 니 다.
    
    <?php
    use yii\helpers\Html;
    use yii\widgets\LinkPager;
    ?>
    <h1>Countries</h1>
    <ul>
    <?php foreach ($countries as $country): ?>
      <li>
        <?= Html::encode("{$country->name} ({$country->code})") ?>:
        <?= $country->population ?>
      </li>
    <?php endforeach; ?>
    </ul>
     
    <?= LinkPager::widget(['pagination' => $pagination]) ?>
    
    이 보 기 는 국가 데 이 터 를 표시 하기 위해 두 부분 을 포함 하고 있 습 니 다.첫 번 째 부분 은 국가 데 이 터 를 옮 겨 다 니 며 무질서 한 HTML 목록 으로 보 여 줍 니 다.두 번 째 부분 은 yii\widgets\LinkPager 을 사용 하여 조작 에서 들 려 오 는 페이지 정 보 를 렌 더 링 합 니 다.작은 위 젯 LinkPager 은 페이지 단추 의 목록 을 표시 합 니 다.모든 단 추 를 누 르 면 해당 페이지 로 이동 합 니 다.
    시운전
    브 라 우 저 는 아래 URL 을 방문 하여 작업 할 수 있 는 지 확인 합 니 다.
    http://hostname/index.php?r=country/index
     
    우선 다섯 나라 의 목록 페이지 를 볼 수 있 습 니 다.국가 아래 에 서 는 네 개의 버튼 을 포함 하 는 페이지 분할 기 를 볼 수 있다.'2'단 추 를 누 르 면 다른 5 개국 을 표시 하 는 페이지,즉 두 번 째 페이지 기록 으로 넘 어 갑 니 다.자세히 살 펴 보면 브 라 우 저의 URL 이:
    http://hostname/index.php?r=country/index&page=2
    이 장면 에서 Pagination 은 데이터 결과 집합 페이지 의 모든 기능 을 제공 했다.
  • 먼저 Pagination 은 SELECT 의 하위 조회 LIMIT 5 OFFSET 0 데 이 터 를 첫 페이지 로 표시 했다.따라서 처음 다섯 개의 데 이 터 를 꺼 내 표시 합 니 다.
  • 그리고 작은 위 젯 LinkPagerPagination::createUrl() 방법 으로 생 성 된 URL 로 페이지 넘 기기 단 추 를 렌 더 링 합 니 다.URL 에 필요 한 인자 page 이 포함 되 어 있어 야 서로 다른 페이지 번 호 를 조회 할 수 있 습 니 다.
  • 단 추 를 누 르 면 country/index 경로 의 새로운 요청 이 시 작 됩 니 다.Pagination 은 URL 에 있 는 page 인 자 를 받 아 현재 페이지 번 호 를 2 로 설정 합 니 다.새로운 데이터베이스 요청 은 LIMIT 5 OFFSET 5 으로 조회 하여
  • 을 표시 합 니 다.
    Yii 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
    본 고 는 Yii 프레임 워 크 를 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

    좋은 웹페이지 즐겨찾기