laravel 프레임 워 크 데이터베이스 조작,조회 구축 기,Eloquent ORM 조작 실례 분석
1.데이터베이스 연결
laravel 연결 데이터베이스 설정 파일 은 config/database.php 에 있 습 니 다.그 중에서 connection 필드 에 laravel 이 지원 하 는 데이터베이스 설정 정 보 를 포함 하고 호스트,포트,데이터 베이스,사용자 이름,비밀번호 등 정 보 를 볼 수 있 습 니 다.
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],
그 중에서 모두 env 파일 의 기본 값 을 도입 합 니 다.laravel 디 렉 터 리 의 가장 바깥쪽 에는.env 파일 이 있 고 그 중에서 해당 하 는 기본 값 을 설정 합 니 다.DB_HOST=데이터베이스 서버 주소
DB_PORT=데이터베이스 포트
DB_DATABASE=데이터베이스 이름
DB_사용자 이름
DB_PASSWORD=비밀번호
2.원생 SQL 조작 데이터베이스
controller 에서 데이터 베 이 스 를 추가 삭제 하고 검사 하 는 작업
public static function testDB(){
//
DB::insert("insert into student(name,age) values(?,?)",['sandy',19]);
//
DB::delete('delete from student where name=?',['sandy']);
//
DB::update('update student set sex=? where name=?',[' ','tory']);
//
$res=DB::select('select * from student');
//
DB::statement('drop table users');
//
dd($res);
}
그 중 통과?자리 표시 자 방식 으로 매개 변 수 를 바 인 딩 하여 데이터 베 이 스 를 공격 하 는 것 을 방지 하고 이름 을 바 인 딩 하 는 방식 도 사용 할 수 있 습 니 다.
$res = DB::select('select * from users where id = :id', ['id' => 1]);
3.조회 구축 기 를 통 해 데이터 베 이 스 를 조작 합 니 다.Laravel 은 자주 사용 하 는 데이터 베 이 스 를 인터페이스 함수 로 밀봉 하여 사용자 에 게 호출 을 제공 하여 데이터 베 이 스 를 더욱 편리 하 게 합 니 다.이 인 터 페 이 스 는 검색 구축 기(query builder)입 니 다.또한 PDO 바 인 딩 방식 을 통 해 SQL 주입 공격 을 피하 고 조회 구축 기 를 사용 할 때 사용자 의 입력 을 걸 러 내 는 것 을 고려 하지 않 아 도 됩 니 다.
3.1 결과 집
lavarel 조회 의 반환 결과 집합 은 Stdclass 입 니 다.$res->name 와 유사 한 방문 대상 속성 으로 반환 값 에 접근 할 수 있 습 니 다.전체 표를 조회 하려 면 get()을 사용 하고,조회 표 의 한 데 이 터 는 first()를 사용 하 며,한 데이터 의 한 필드 는 value()를 사용 하고,조회 표 의 모든 데이터 의 한 필드 는 pluck()를 사용 합 니 다.
//get()
$res=DB::table('student')->get();
//first()
$res=DB::table('student')->where('id','1001')->first();
//value()
$res=DB::table('student')->where('id','1003')->value('name');
//pluck() name
$res=DB::table('student')->pluck('name');
결과 가 집 중 된 데이터 가 너무 많 을 때 블록 을 나 누 는 방식 으로 결과 집합 을 되 돌 릴 수 있 습 니 다.chunk 함수 의 첫 번 째 매개 변 수 는 블록 의 크기(블록 당 2 개의 데이터 로 결과 집합 을 되 돌려 줍 니 다)이 고 두 번 째 매개 변 수 는 반전 함수 입 니 다.false 로 돌아 갈 때 결과 집합 을 되 돌려 줍 니 다.
DB::table('student')->chunk(2,function ($res){
foreach ($res as $user){
var_dump($user);
if ($user->id >=1003) return false;
}
});
3.2 첨삭 검사
//
DB::table('student')->insert(['name'=>' four','sex'=>' ','age'=>22]);
//
DB::table('student')->insert([
['name'=>'wang ','sex'=>' ','age'=>21],
['name'=>'zhao ','sex'=>' ','age'=>20],
]);
//
DB::table('student')->where('id','>=',1006)->delete();
//
DB::table('student')->truncate();
//
DB::table('student')->where('id',1005)->update(['sex'=>' ','age'=>21]);
// increment、 decrement, 1
DB::table('student')->where('id',1005)->increment('age',2);
//
DB::table('student')->where('id',1005)->increment('age',1,['sex'=>' ']);
//
$res=DB::table('student')->select('name','age')->get();
3.3 조회 조건구축 기 를 조회 하 는 where 방법 을 통 해 데이터베이스 조회 조건 을 추가 할 수 있 습 니 다.
where()
세 개의 인 자 를 받 을 수 있 습 니 다.필드 이름,연산 자,값,연산 자 는'='이면 생략 할 수 있 습 니 다.예 를 들 어 id>=1003 의 데 이 터 를 조회 할 수 있 습 니 다.
$res=DB::table('student')->where('id','>=',1003)->get();
또한 조건 배열 을 통 해 여러 개의 제한 조건 을 전송 할 수 있 습 니 다.예 를 들 어 조회 id>=1003 및 id<1005:
$res=DB::table('student')->where([
['id','>=',1003],
['id','<',1005]
])->get();
orwhere()
를 통 해 두 개의 병렬 조건 을 연결 합 니 다.예 를 들 어 id>=1003 또는 id<1002 의 데 이 터 를 조회 합 니 다.
$res=DB::table('student')->where('id','>=',1003)->orwhere('id','<',1002)->get();
whereBetween()
특정한 구간 에 있 는 데 이 터 를 조회 합 니 다.
$res=DB::table('student')->whereBetween('id',[1003,1006])->get();
when()
어떤 조회 가 실 행 될 지 여 부 를 판단 합 니 다.예 를 들 어$order 가 true 일 때 정렬 을 실행 합 니 다.
$order=false;
$res=DB::table('student')->when($order,function ($query){
return $query->orderBy('age','desc'); //$order true
})->get();
3.4 정렬,그룹,한정
//orderBy age
$res=DB::table('student')->orderBy('age','asc')->get();
// create_at
$res=DB::table('student')->latest('create_at')->get();
//
$res=DB::table('student')->groupBy('sex')->get();
// 2
$res=DB::table('student')->skip(1)->limit(2)->get();
3.5.집합 함수laravel 조회 구축 기 는 집합 함수 가 조회 작업 에 사용 되 는 결과 집합 도 제공 합 니 다.count(계수),sum(구 화),avg(평균 값),max(최대 값),min(최소 값)을 포함 합 니 다.예 를 들 어 연령 평균 값 을 구 합 니 다.
$res=DB::table('student')->avg('age');
4、Eloquent ORMORM 은 대상 관계 매 핑(Object Relational Mapping)의 약칭 으로 대상 을 대상 으로 하 는 프로 그래 밍 언어 에서 서로 다른 유형의 시스템 의 데이터 간 의 전환 을 실현 하 는 기술 로 데이터베이스 에 있 는 데 이 터 를 대상 의 형식 에 따라 조직 하여 대상 을 대상 으로 하 는 프로그램 이 데이터 베 이 스 를 조작 하 는 데 편리 하도록 할 것 이다.이전에 mongoDB 를 공부 할 때 사용 한 적 이 있다mongoose ORM 조직 mongoDB.당시 에는 아직 이것 이 orm 이라는 것 을 의식 하지 못 했다.
Laravel 에 내 장 된 Eloquent ORM 은 데이터베이스 데 이 터 를 조직 하 는 데 편리 한 방법 을 제공 합 니 다.모든 데이터 시트 는 이 표 와 상호작용 을 하 는 모델(Model)에 대응 합 니 다.Model 류 를 통 해 데이터 시트 를 조회,삽입,업데이트,삭제 할 수 있 습 니 다.Eloquent ORM 은 본질 적 으로 조회 구축 기 이기 때문에 위 에서 조회 구축 기 가 사용 하 는 방법 Eloquent 를 모두 사용 할 수 있 습 니 다.
4.1 모델 생 성
app 폴 더 에 model 파일 을 새로 만 들 려 면 모든 데이터 베 이 스 는 model 에 대응 해 야 합 니 다.예 를 들 어 Student 템 플 릿 류 를 만 드 는 것 입 니 다.
namespace App;
use Illuminate\Database\Eloquent\Model;
class Student extends Model
{
//
protected $table='student';
//
protected $primaryKey='id';
//
protected $fillable=['name','age'];
//
protected $guarded=['created_at'];
}
템 플 릿 클래스 는 기본적으로 소문 자 끝 에 s 를 추가 하 는 데이터 베 이 스 를 사용 합 니 다.예 를 들 어 Student 템 플 릿 은 현재 데이터베이스 에서 students 표를 찾 습 니 다.사용자 정의 테이블 이름 이 필요 하 다 면,테이블 이름 을 지정 하기 위해$table 변 수 를 다시 써 야 합 니 다.Eloquent 의 기본 키 는'id'이 고 이 필드 는 자체 증가 int 형 입 니 다.사용자 정의 키 가 필요 하 다 면$primary Key 를 통 해 지정 할 수 있 습 니 다.
Eloquent 는 기본적으로 데이터 시트 의 생 성 시간,업데이트 시간 을 관리 합 니 다.데이터 시트 의 created 에 대응 합 니 다.at、updated_at 필드,테이블 을 만 들 때 이 두 필드 를 포함해 야 합 니 다.관리 가 필요 하지 않 으 면 Public$timestamps=false;를 사용 할 수 있 습 니 다.그렇지 않 으 면 잘못 보고 할 것 이다.
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list'
데이터베이스 에 있 는 필드 를 두 시간 동안 사용자 정의 할 수도 있 습 니 다.
const CREATED_AT = 'my_create';
const UPDATED_AT = 'my_update';
4.2,Eloquent 작업 데이터베이스
// 、
$stu=new Student();
$stu->name='orm2';
$stu->save();
//create
Student::create(['name'=>'orm3','age'=>13]);
//destroy
Student::destroy(1006,1007);
//
Student::where('id',1008)->delete();
// Student
$stu=Student::find(1005);
$stu->age=21;
$stu->save();
//
Student::where('id',1005)->update(['age'=>22]);
//
$table=Student::all();
// id
$row=Student::find(1002);
dd($table);
물론 빌 더 의 get(),first()를 통 해 데 이 터 를 얻 을 수 있 습 니 다.위의 첨삭 개 조 를 통 해 Eloquent 는 검색 빌 더 의 모든 방법 을 사용 할 수 있 음 을 알 수 있 습 니 다.첨삭 개 조 를 제외 하고 where,취 합 함수 등 도 있 습 니 다.
더 많은 Laravel 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.,,,,,Laravel 프레임 워 크 입문 및 진급 튜 토리 얼
본 고 는 Laravel 프레임 워 크 를 바탕 으로 하 는 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.