Laravel에서 vendor 내의 처리를 재정의하는 방법
실제로 치는 문제
htps : // 기주 b. 코 m / 야 j 등 / ぁ 라 ょ l- 오시 8
yajra/laravel-oci8에 의존하는 구현에서 ORACLE의 예약어 열을 포함하는 쿼리를 실행하려고하면 실패합니다.
오류 로그 예
[2019-07-20 15:06:06] local.ERROR: Error Code : 904
Error Message : ORA-00904: "PASSWORD": 無効な識別子です。
Position : 21
Statement : update "M_USER" set "PASSWORD" = :p0, "UPDATED_AT" = :p1 where "NAME" = :p2
Bindings : [*****************************,2019-07-20 15:06:06,hogeuser]
원인
원인은 ver5.4까지는 쿼리를 조립할 때 예약어가 아닌 것을 판별하여 컬럼명을 대문자로 변환하고 있었지만, ver5.5 이후는 문답 무용으로 변환하게 되어 버렸기 때문인 것 같습니다. 했다.
※오류 로그에 나와 있는 대문자의 「PASSWORD」가 예약어였습니다. 실제 열 이름은 소문자로 'password'
비교
ver
git
5.4
htps : // 기주 b. 이 m/야j등/ぁらゔぇl-오시 8/bぉb/5. php
5.5
htps : // 기주 b. 이 m/야j 등/ぁらゔぇl-오시 8/bぉb/5. php
대책
(1) 패키지의 오버라이드 버전을 준비
임의의 디렉토리에 패키지(yajra/laravel-oci8)를 통째로 복사해 배치
※임의 디렉토리
[프로젝트 폴더]/app/VendorOverrides/
문제의 [비교] 부분의 처리 만 다시 씁니다.
※5.4의 처리로 치환
(2) composer.json을 다음과 같이 추가합니다.
composer.json
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
},
"exclude-from-classmap": [
"vendor\\yajra\\laravel-oci8\\src\\Oci8\\Query\\Grammars\\OracleGrammar.php"
],
"files":[
"app\\VendorOverrides\\yajra\\laravel-oci8\\src\\Oci8\\Query\\Grammars\\OracleGrammar.php"
]
},
(3) 명령 실행
실행 명령
composer dump-autoload
참고
Laravel How to override vendor class file?
ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ 메/php/ぁらゔぇlーおゔぇりーーゔぇ도 rcぁせ s. HTML
Reference
이 문제에 관하여(Laravel에서 vendor 내의 처리를 재정의하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hamkiti/items/d06367927e1a4ac1971d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)