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 를 사용 하려 면 다음 플러그 인 을 볼 수 있 습 니 다.
활동 기록 클래스 의
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
대상 의 사명 은 주로 두 가지 가 있다.offset
과 limit
종 구 를 설정 하여 모든 요청 이 한 페이지 의 데이터 만 되 돌려 주 는 것 을 확보 합 니 다(이 예 에서 각 페이지 는 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 은 데이터 결과 집합 페이지 의 모든 기능 을 제공 했다.
LIMIT 5 OFFSET 0
데 이 터 를 첫 페이지 로 표시 했다.따라서 처음 다섯 개의 데 이 터 를 꺼 내 표시 합 니 다.page
이 포함 되 어 있어 야 서로 다른 페이지 번 호 를 조회 할 수 있 습 니 다.country/index
경로 의 새로운 요청 이 시 작 됩 니 다.Pagination 은 URL 에 있 는 page
인 자 를 받 아 현재 페이지 번 호 를 2 로 설정 합 니 다.새로운 데이터베이스 요청 은 LIMIT 5 OFFSET 5
으로 조회 하여 Yii 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 는 Yii 프레임 워 크 를 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Yii2 삭제 확인 대화 상자를 괄호로 설정합니다.가까스로 처음부터 부트스트랩이었는데, 삭제 확인 등에 사용된 그 OS 표준 대화 상자인 JSconfirm()도 더 멋있고 싶었다.그래서 Bootbox는 그것을 다시 쓴다. 프레임에서 찾아낸yii.js에 이렇게 쓰여 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.