이 글은 주로 YII2 데이터베이스 쿼리 실습에 대한 관련 정보를 소개합니다. 필요한 친구는
yii2 프레임워크의 예비 탐색, 추가, 삭제, 수정을 참조하세요. , 관련 쿼리 등 기본적인 데이터베이스 작업을 간단하게 연습합니다.
데이터베이스 구성.
/config/db.php 데이터베이스 구성
연습 중에 테스트 라이브러리 - "test table -" 두 레코드는 다음과 같습니다.
mysql> 테스트에서 ;
---- --------
| ID |
---- --------
| 🎜> | 2 |
---- --------
세트 내 18개 행(0.00초)
$sql = "select * from test where 1";
$res = Test::findBySql($sql)->all() ;
var_dump(count($res)) // res->2
// findbysql은 SQL 삽입을 방지합니다
$id = '1 or 1=1';
$sql = "select * from test where id = " . $id;
$res = Test: :findBySql($sql)->all();
var_dump(count($res)); // res-> 2
$sql = "select * from test where id = :id" ;
// 로케이터는 자동으로 SQL 삽입을 방지합니다
$res = Test::findBySql($sql,array(":id"=>$id))->all();
var_dump (count($res)); // res->1
추가 작업
// 작업 추가
$test = new Test();
$test->name = 'test';
// 유효성 검증
$test->validate() ;
if($test->hasErrors()){
echo "데이터가 불법입니다.";
die;
}
$test->save();
// id = 1
$res = Test::find()->where(['id' => 1])->all() ;
var_dump(count($res)); //1
// id > 0
$res = Test::find()->where(['>','id ',0])->all();
var_dump(count($res)); //2
// id > id <=2
$res = 테스트: :find()->where(['between','id',1,2])->all();
var_dump(count($res)) //2
// name 필드 like
$res = Test::find()->where(['like', 'name', 'cuihuan'])->all();
var_dump(count($res) )); //2
// 쿼리 사용법 obj->array
$res = Test::find()->where(['between','id',1,2]) - >asArray()->all();
var_dump($res[0]['id']) //2
// 일괄 쿼리, 대용량 메모리 작업을 위한 일괄 쿼리
foreach (Test::find()->batch(1) as $test) {
var_dump(count($test));
}
// 선택 및 삭제
$res = Test::find()->where(['id'=>1])->all();
$res[0] ->delete();
//직접 삭제
var_dump(Test::deleteAll('id>:id', array(':id' => 2)));
$res = Test::find()->where(['id'=>4])->one();
$res ->name = "update";
$res->save();
학생 테이블(student): id, name; 점수 테이블(score): id, stu_id, Score// 해당 학생의 모든 점수
$ stu = Student::find()->where(['name'=>'xiaozhuai'])->one();
var_dump($stu->id);
// 기본 가져오기
$scores_1 = $stu->hasMany('appmodelScore',['stu_id'=>$stu->id])->asArray()->all();
$ Score_2 = $stu->hasMany(Score::className(),['stu_id'=>'id'])->asArray()->all();
var_dump($scores_1) ;
var_dump($scores_2);
먼저 학생 모델에서 관련 연관 호출 기능을 캡슐화합니다
네임스페이스 appmodels;
Yiii 사용;
yiidbActiveRecord 사용;
class Student 확장 ActiveRecord
{
공용 정적 함수 tableName()
{
return 'student';
}
// 점수 정보 가져오기
공용 함수 getScores()
{
$scores = $this->hasMany(Score::className(), ['stu_id' => 'id'])->asArray()->all();
$scores를 반환합니다.
}
}
직후 호출, 두 가지 호출 방법
// 함수 캡슐화 후 호출
$scores = $stu->getScores() ;
var_dump($scores);
//__get의 자동 호출 방법 사용
$scores = $stu->scores;
var_dump($scores);
마지막으로
위 내용은 yii2 배포 및 사용 시 추가, 삭제, 수정, 조회, 관련 조회 등 기본적인 작업들입니다.