2013-09-02 4 views
-1

INSERT IGNORE 및/또는 IF NOT EXISTS 문을 사용하여 Lithium Model :: save() 함수를 실행할 수있는 방법이 있습니까?Lithium PHP 프레임 워크 - SQL 삽입 무시/존재하지 않는 경우

유일한 방법은 RAW-SQL-Statements를 실행하는 것입니다. 그러나 이것은 디자인 위반 일 것입니다 ... 그래서 어떤 도움이 좋을 것입니다.

감사드립니다.

/creality는

+0

여기서 해결할 문제가 있습니까? 모델 :: create()는 데이터베이스에 접근하지 않고 새로운 모델 객체를 인스턴스화합니다. –

+0

예. 분명합니다. 모델 :: save() 때까지 DB에서 아무 일도 일어나지 않습니다. 그리고 이것이 문제입니다. 중복 키가 발견되면 SQL에 의해 예외가 발생합니다. 나는 이것을 피하고 싶다. – creality

답변

0

리튬 당신은 원시 SQL을하지 않는 것을 할 수있는 방법이 없습니다. lithium \ data \ source \ Database 오브젝트에서는 "INSERT INTO ..."만 지원된다는 것을 알 수 있습니다.

이 기능이 지원되지 않는 이유는 새 개체를 저장하면 개체의 기본 키 (id)가 자동으로 채워지고 INSERT IGNORE가 문제를 복잡하게 만들 수 있기 때문입니다.

최상의 전략은 키 값을 기반으로 SELECT를 실행 한 다음 일치하는 레코드가있는 값을 던져 버리는 것이 가장 좋습니다.

관련 문제