2017-05-05 13 views
0

私は45,000以上のレコードを持つデータベースを操作していますが、データを1つのテーブルから別のテーブルに渡して更新する必要がありますが、データを渡すたびに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

入手しました。ありがとうございました。 –

関連する問題