Ich habe Company
Modell und Contact
Modell definiert in meiner Laravel 5.4
Anwendung, beide von ihnen haben viele zu viele Beziehung. So zum Beispiel Kontakt Modell hat:Optimieren von Code mit Chunk oder Cursor in Laravel
public function company()
{
return $this
->belongsToMany('App\Company', 'company_contact','contact_id', 'company_id')->withTimestamps();
}
Jetzt habe ich einen Datensatz, wo ich alle Kontakte Daten ziehen will und es Firmendaten, so war ich mit:
public function getData()
{
$contacts = Contact::all();
foreach($contacts as $contact)
{
$getCompany = $contact->company()->withPivot('created_at')->orderBy('pivot_created_at', 'desc')->first();
$getCompany->contacts = Company::find($getCompany->id)->contacts;
$contact->company = $getCompany;
$contact->companies_interested = json_decode($contact->companies_interested);
$companies = [];
if($contact->companies_interested)
{
foreach($contact->companies_interested as $companiesInterested)
{
$getCompany = Company::withTrashed()->find($companiesInterested);
$companies[] = array(
'value' => $getCompany->id,
'label' => $getCompany->name
);
}
$contact->companies_interested = json_encode($companies);
}
}
return response()->json([
'model' => $contacts
], 200);
}
Das funktioniert völlig in Ordnung für kleine Datenmenge, aber während die Verwendung einer großen Anzahl von Daten fehlschlägt (ca. 10.000 Felder), denke ich php memory fails
zu laden, wenn es um große Datenmenge geht. Ich ging durch Laravel
Docs, um die Lösung zu finden und über und cursor()
Methoden zu lernen, kann mir jemand sagen, was in diesem Problem getan werden kann, oder was der Ansatz sein kann, um dies zu überwinden.
Dank
Sind Sie mit Chris Fidao der "Laravel Performante" -Serie familar? Er hat ein Video zum Database Chuncking in Laravel, das genau erklärt, was Sie zu implementieren versuchen. Es ist auch kostenlos. https://serversforhackers.com/laravel-perf/database-chunking – Victor