2016-09-05 5 views
0

다형성 관계가있는 테이블을 쿼리하여 Laravel에서 기본 쿼리를 수행하려고합니다. 이 테이블에는 App\MedicationErrorApp\PressureUlcer과 같은 값을 보유하는 record_type이라는 열이 있습니다.PHP 문자열 끝에 백 슬래시 추가

`Action::where('record_type','App\MedicationError')` 

내가 MedicationErrorPressureUlcer 같은 문자열을 포함하는 변수 집합이 있습니다

나는이 유사한 쿼리를 실행합니다.

App\으로 문자열 접두사를 붙이려면 어떻게해야합니까?

내가 어려움을 겪고있는 이유는 내 'App' 문자열 끝에 백 슬래시를 추가하는 방법을 해결할 수 없기 때문입니다. 이것은 내가 지금 시도하고있는 것입니다 :

$type = 'App\\ '.studly_case($record->type); 

그러나 그것은 App\\ RiskAssessmentUpdate을 반환합니다. 끝에서 공백을 제거하면 백 슬래시가 분명히 작은 따옴표를 이스케이프합니다. trim('App\\ ')도 도움이되지 않습니다.

나는 정말 분명한 (정규식?) 해결책을 여기에서 놓치고있는 것처럼 느낍니다. 어떤 도움을 주시면 감사하겠습니다.

+0

이중 슬래시를 사용하면 첫 번째 슬래시가 두 번째 슬래시를 이스케이프 처리하므로 'App \\'이 App \을 생성합니다. –

+0

큰 따옴표로 묶인 경우 슬래시를 이스케이프 처리해야합니다. 예를 들어'\\ "는 작은 따옴표로 묶인 경우에는 필요가 없습니다. ''\ '' – apokryfos

+0

@apokryfos - au contraire, 작은 따옴표로도 특정 문자를 이스케이프 처리해야합니다. ''\ ''는 [PHP Docs] (http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single) 중 하나입니다 ... 작은 따옴표 안의 작은 따옴표 (''')는 이스케이프가 필요한 또 다른 문자입니다. –

답변

1

두 개의 백 슬래시를 작은 따옴표로 묶은 문자열은 하나의 백 슬래시를 만들어야하며, 첫 번째는 백 슬래시를 이스케이프해야합니다. 그에 백 슬래시를 반환하는 것, 문제는 코드의 studly_case($record->type) 부분에 있다고

$type = "App\\" . studly_case($record->type); 

내 생각은 다음과 같습니다

$type = 'App\\' . studly_case($record->type); 

또는, 같은 방식으로, 이중 인용 문자열을 사용할 수 있습니다 그것의 시작 부분에. 이 코드에게 시험을주고 그것이 작동하는지 확인 : 어떤 및 모든 주요 백 슬래시 문자를 트림한다

$type = "App\\" . ltrim(studly_case($record->type), '\\'); 

합니다.

+0

감사하지만 불행히도 그게 작동하지 않았다. 두 경우 모두 'App \\ PressureUlcer'와 같은 두 개의 백 슬래시가 방금 출력 된 쿼리 –

+0

이 경우'$ record-> type '이 백 슬래시 문자로 시작되지 않는지 확인할 수 있습니까? – Jonathon

+0

실제로이 코드는 다음과 같이 설정되어 있습니다 :'DB :: raw ('Medication Error'를 타입으로 사용)' –