4

일부 메트릭을 기반으로 집계 카운트를 저장하는 작업자 스크립트 중 하나에서 쿼리가 약간 복잡하고 쿼리 작성기를 사용하여 작성하기가 쉽기 때문에 Eloquent를 사용하지 않습니다. 현재 데이터베이스에서 값을 가져오고 데이터베이스에 값을 삽입하거나 업데이트해야합니다. 쿼리 작성기를 사용하여 save() 메서드를 사용하여 업 샘플 작업을 수행 할 수 있습니까? 또는이 항목이 데이터베이스에 있는지 여부를 매번 확인해야합니까?쿼리 작성기로 작업 업 그레 이드

나는 총 100,000 개의 항목이 있으며 매일 작업으로 실행하려고합니다. 그래서 특정 항목이 DB에 있는지 여부를 확인해야하는 경우 여러 번 데이터베이스에 액세스해야합니다. 이것에 대한 대체 솔루션이 있습니까?

저는 두 개의 모델 클래스를 작성하려고합니다. 하나는 Eloquent를 사용하고 다른 하나는 조회 빌더를 사용하는 것입니다. Eloquent 모델에서 내 사용자 지정 쿼리를 사용할 수 있습니까?

답변

3

Eloquent는 정확히 원하는대로 할 수있는 updateOrCreate() 방법이 있습니다. 그러나 쿼리 작성기에는 비슷한 방법이 없습니다.

쿼리 작성기로 원시 쿼리를 작성하고 업 샘플 솔루션으로 INSERT ... ON DUPLICATE KEY UPDATE을 사용할 수 있습니다.

+1

'updateOrCreate'는 SQL upsert만큼 원초적이지 않다는 것을 알아 두십시오 : https://github.com/illuminate/database/blob/2656d7a7118a6d9fe1f8c9ed22d65ab609b8ae1d/Eloquent/Builder.php#L391. 먼저 경쟁 조건에 취약한 수있는 삽입 또는 업데이트를 선택합니다. –

관련 문제