내 사용자 지정 코드에서 네임 스페이스를 사용한 후 SilverStripe로 작업하는 데 많은 문제가 있습니다. 가장 큰 문제점은 SilverStripe이 이름 공간 클래스를 저장하는 데 사용하는 명명 규칙입니다.SilverStripe 3.x에서 네임 스페이스가 권장됩니까?
Product
이라는 데이터 공간과 MyStore
이라는 데이터 객체는 Product\MyStore
이라는 테이블을 만듭니다. 슬래시는 MySQL의 이스케이프 시퀀스이므로 명명 규칙에서 다소 어리석은 선택입니다.
이제 문제는 CLI에서 테이블의 오래된 필드를 수동으로 삭제하려고 시도하는 것이므로 이러한 테이블 이름을 이스케이프 처리하는 쿼리를 수동으로 작성할 수 없습니다.
describe Product\MyStore
describe "Product\MyStore"
describe 'Product\MyStore'
describe "Product\\MyStore"
describe 'Product\\MyStore'
describe Product\\MyStore
아직이 잘입니다 :
describe SiteTree
물어해야 네임 스페이스는이 때문에 SilverStripe에 추천? 나는 3.5에서 처리되는 방식이 꽤 비생산적인 것처럼 모든 네임 스페이스를 찢어 버리는 것에 아주 가깝다.
UPDATE : 향후 검색을 위해 CLI에서이 문제를 해결하려면 테이블 이름을 백틱으로 묶어야합니다.
describe `Product\MyStore`
사용법이 좋지 않거나 이름이 잘못 지정된 표와 같이 사용되는 이유는 arguable in the MySQL community 인 것처럼 보입니다. 사물의 명명 협약 측면에서 여전히 유효 할 수 있으므로 질문을 떠날 것입니다.
SS4는 DB 테이블에 대해 동일한 명명 체계를 사용합니다. 따라서 백 슬래시가 남아있게됩니다. * 그러나 * SS4에서는 DataObject 당 사용자 정의 테이블 이름 (SS3 사용자가 사용할 수없는 옵션)을 지정할 수 있습니다. – bummzack