Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

PHP Framework 실무 2주차 정리 (Laravel) 본문

2-2/PHP Framework 실무

PHP Framework 실무 2주차 정리 (Laravel)

김브래 2023. 9. 14. 23:13

이론

Framework & MVC Programming

Framework

프로그램을 개발 하기위한 뼈대

MVC 프로그래밍

- 기존의 프로그래밍 방식에서 벗어나 화면과 코딩, 데이터베이스로 작업영역을 분리하여 처리하는 방식.
 
1) 디자인과 코딩의 분리로 디자인변경 및 유지보수 용이

2) 모듈화 및 정형화로 인해 협력 작업 가능


Blade 템플릿 엔진


Blade 파일 : 파일이름.blade.php

 

1. {{ 변수명 }} //<?=변수명; ?>

 

2. @if

     

    @elseif

     

    @else

     

    @endif

 

3. @switch

       @case( )

          

          @break

       @default

          

    @endswitch

 

3. @for(초기값; 조건; 증감)

       

    @endfor

 

4. @foreach($배열 as $변수)

       

    @endforeach

 

5. @while(조건)

       

    @endwhile

 

6. {{--   주석    --}}

 

7. @incldue('파일이름')

 

8. @csrf  = <input type="hidden" name="_token" value="난수값">

 

9. @method('PUT or PATCH or DELETE')

       = <input type="hidden" name="_method" value="PUT">

10. @error  {{ $message }}  @enderror

 

11. @yield('이름')

      @extends('이름')

      @section('이름') … @endsection


Routing


Routing

- 프로그램에서 요청한 URL에 따라 어떤 파일들을 실행해야 하는지 그 경로를 알려주는 역할

 

예)

Route::HTTP함수( 'URI경로', '콜백함수' );

Route::redirect( '/이 경로를', '/다른 경로로' );

Route::view( '경로', 'view폴더의 '웹문서' );

 

등록 : Route::get('member', [MemberController::class, 'index']);

실행 : http:://localhost/member

=  MemberController클래스안의 index함수 호출

 

RESTFull Resource Router

Route::resource( 'member', Member::class );

 

목록: Route::get( '/member', [MemberController::class,'index'] );

신규: Route::get( '/member/create', [MemberController::class,'create'] );

추가: Route::post( '/member', [MemberController::class,'store'] );

보기: Route::get ( '/member/{id}', [MemberController::class,'show'] );

편집: Route::get ( '/member/{id}/edit', [MemberController::class,'edit'] );

수정: Route::patch( '/member/{id}', [MemberController::class,'update'] );

삭제: Route::delete( '/member/{id}', [MemberController::class,'destroy'] );


Database


Row Query

use Illuminate\Support\Facades\DB;

 

Select 함수 :

$sql = 'select * from members where id=2';

$result = DB::select($sql);

 

$result = DB::select('select * from members where id=?', [2]);

 

insert 함수 :

$data = array(’hong’, ‘1234’, ‘홍길동’);

$result = DB::insert('insert into members (uid, pwd, name) values (?, ?, ?)', $data );

 

update 함수 :

$result = DB::update('update members set rank=? where id=?', [1, 5] );

 

delete 함수 :

$result = DB::delete('delete from members where id=?', [5] );

 

statement 함수 :

$result = DB::statement( 'drop table members' );

 

Query Builder

$변수명 = DB::table('테이블명') -> 함수1 -> … … … -> 함수n

Select 함수 :

DB::table('테이블명')->get();    // 전체자료
DB::table('테이블명')->first();    // 첫번째 자료
DB::table('테이블명')->select('name', 'tel as phone')->get(); // 이름,전화
DB::table('테이블명')->where('name', '홍길동')->get();
DB::table('테이블명')->where('name', 'like','%%')-> where('rank',0)-> get();
DB::table('테이블명')->where('name', 'like','%%')-> orwhere('rank',0)-> get();
DB::table('테이블명')->where('name', 'like','%%')->wheretween('age',[20,29])->get();
 
DB::table('테이블명')->orderby('name','desc');    // 정렬 : asc, desc
DB::table('테이블명')->orderby('name','desc')->orderby('rank','asc');    // 복합정렬
DB::table('테이블명')->inRandomOrder();           // 랜덤정렬
DB::table('테이블명')->find(5);    // id=5 인 자료
DB::table('테이블명')->count();   // 자료수
 
DB::table('테이블명')->sum('price');   // , 평균, 최대
DB::table('테이블명')->avg('price');
DB::table('테이블명')->max('price');
 
DB::table('테이블명')->skip(10)->take(5)->get();   // 10번째부터 5
DB::table('테이블명')->offset(10)->limit(5)->get();
 
DB::table('테이블명')->select( DB::raw( 'num', 'price', 'num*price as prices') );  // 로우쿼리
DB::table('테이블명')->selectraw( 'num', 'price', 'num*price as prices' );
 

DB::table('jangbu')->leftjoin(‘product’,‘jangbu.product_id’,‘=’,‘product.id’)

                              ->leftjoin(‘gubun’,‘jangbu.gubun_id’,‘=’,‘gubun.id’)

                              ->select(‘jangbu.*’,‘gubun.name’,‘product.name’)->get();

 

$id= DB::table('테이블명')->insertGetId( [‘name’=>’홍길동‘, ’uid’=>’idhgd’, ‘pwd’=>’1234’] );

// 방금 추가한 레코드의 id값을 알아내는 경우

 

Eloquent ORM (object Relation Mapper)

php artisan make:model 모델클래스명 –m    =    모델클래스명.php 자동생성

선언 : use App/모델클래스명;

호출 : 모델클래스명::함수1 -> … -> 함수n;

 

use App/Member;

$result = Member::orderby('name,'ase')->get();

 

모델클래스명.php

<?

 

     namespace App;

     use Illuminate\Database\Eloquent\Model;

     class 모델클래스명 extends Model

      {

           protected $fillable = {

               '필드이름1',

               '필드이름2',

                     

            }

        }

?>

 

모델클래스명Controller.php

 

1) 새 자료 저장

public function store(Request $request)

{

    $row = new Member([

        '필드1'  =>  $request->input('필드1'),

        '필드2'  =>  $request->input('필드2'),

           

     ]);

     $row->save();

}

 

public function store(Request $request)

{

    $row = new Member ;

    $row->'필드1'  =  $request->input('필드1');

    $row->'필드2'  =  $request->input('필드2');

        

     $row->save();

}

 

2) 수정 자료 저장

public function update( Request $request, $id )

{

    $row = Member::find($id);

    $row->'필드1'  =  $request->input('필드1');

    $row->'필드2'  =  $request->input('필드2');

        

     $row->save();

}

 

3) 자료 삭제

public function destroy( $id )

{

    $row = Member::find($id);

    $row->delete();

}


실습 페이지

 

member_list.html
member_row.html