2014-09-24 16 views
11

İşte benim için çalışmıyor aşırı basitleştirilmiş bir örnek. Nasıl (bu yöntemi kullanarak, aslında bu spesifik sonucu istiyor olsaydım daha iyi yollar olduğunu biliyorum), toplam kullanıcı sayısını alabilir miyim?Bir Laravel parçasının dönüş değerini nasıl alabilirim?

Bu, NULL değerini döndürür. Chunk işlevinden nasıl bir dönüş değeri alabileceğime dair bir fikrin var mı?

Düzenleme:

$processed_users = DB::table('users')->chunk(200, function($users) 
{ 
    // Do something with this batch of users. Now I'd like to keep track of how many I processed. Perhaps this is a background command that runs on a scheduled task. 
    $processed_users = count($users); 
    return $processed_users; 
}); 
echo $processed_users; // returns null 
+0

Bekleyin, toplam kullanıcı sayısını almak istersiniz, bundan geri veriye ihtiyacınız yok mu? öbek gibi gözükmüyor – Ohgodwhy

+0

@Ohgodwhy ben öbek işlevinin sonuçlarını almaya çalışıyorum bunu en etkili yolu olacaktır. Lütfen örneğin özelliklerini dikkate almayın. – Citizen

+0

@Ohgodwhy Başka bir örnek ekledim. – Citizen

cevap

15

Daha önce bu şekilde istediğini elde edebilirsiniz sanmıyorum: Burada

daha iyi bir örnek olabilir. Anonim işlev chunk yöntemiyle çağrılır, böylece kapağınızdan döndüğünüz her şey chunk tarafından yutulur. chunk potansiyel bu anonim işlev N kez çağırır olduğundan, buna çağırır kapanışları geri iade etmek için hiçbir mantıklı.

Ancak Eğer kapanmasına bir yöntem kapsamına sahip değişkene erişim sağlayan ve kapatma dolaylı sonuçları dönelim olacağı değere yazmak için izin verebilir. Sen use anahtar kelime ile bunu ve & değiştirici ile elde edilir referans tarafından yöntem kapsamına sahip değişken geçmek için emin olun.

Bu, örneğin çalışacaktır;

$count = 0; 
DB::table('users')->chunk(200, function($users) use (&$count) 
{ 
    Log::debug(count($users)); // will log the current iterations count 
    $count = $count + count($users); // will write the total count to our method var 
}); 
Log::debug($count); // will log the total count of records 
+0

Çalıştı! Teşekkürler! Daha ince kontrole ihtiyaç – Citizen

+0

, ayrıca ($ this-> sayısı, sizin örnekte) kendi sınıfındaki bir özelliğini kullanmak ve Dobiş kapatılmasıyla bir artıracaktır olabilir. –

+1

Bunu bulanlar için onlar için çalışmıyor, benim için sayım her bir döngü döngüsünü sıfırlayacaktır. 'Use' ifadesine '&' parametresini eklemeyi unuttum. Eğer eklerseniz, düzgün bir şekilde çalışacaktır. – Maarten00

İlgili konular