2017-05-05 1 views
0

45,000 개가 넘는 레코드로 데이터베이스를 조작하고 있는데 한 테이블에서 다른 테이블로 데이터를 전달해야하지만 데이터를 전달할 때마다 CLI가 작동하지 않습니다. 이러한 데이터를 더 원활하게 조작하는 방법에 대한 제안 사항은 무엇입니까? 오프셋을 사용하는 것에 대한 몇 가지 기사를 보았지만 제 경우에는 적용 할 수 없었습니다.Eloquent에서 데이터를 제한하는 방법은 무엇입니까? Laravel 5.4

$erp = Product::all(); 
    OCProduct::where('product_id', '!=', 0) 
     ->update(['model' => $erp->erp_model]); 
+0

업데이트의 논리는 무엇입니까? –

+0

죄송합니다. 열을 잘못 입력했습니다. 이제 수정했습니다. –

답변

1

나는 코드에 문제가 있다고 생각합니다. $erpCollection이므로 erp_model 속성을 포함하지 않습니다. 해당 컬렉션을 트래버스하고 Product의 각 인스턴스에 대해 erp_model을 잡고 업데이트해야합니다.

그 말로는 내가하려는 일만 추측 할 수 있지만 충돌하는 이유는 분명합니다. 45,000 레코드가 있다면 PHP의 변수에 모두 저장 한 다음 쿼리를 실행하려고합니다. 데이터베이스가 단일 업데이트 쿼리를 통해 모든 것을 처리하도록하는 것이 훨씬 낫습니다.

UPDATE oc_products 
INNER JOIN products ON oc_products.product_id = products.id 
SET oc_products.model = products.erp_model 
WHERE oc_products.product_id <> 0; 
+0

내 코드를 압도하지 않겠습니까? –

+0

나는 당신이 무엇을 요구하고 있는지 확신하지 못합니다. 그것은 PHP에서 데이터베이스로 작업을 로딩하는 것에서 벗어난 것입니다. – user3158900

+0

알았습니다. 고맙습니다. –

관련 문제