2017-12-21 7 views
1

Sehr schnell, ich habe dieses Schulprojekt, an dem ich arbeite, aber mir scheint etwas ein Problem zu sein.Vergleicht man zwei Tabellen in Laravel, um zu prüfen, ob eine Zeile in den Tabellen existiert

ich habe:

Tabelle A - für Gebühren:

id | feename | fee_level | fee_acad_year 

Tabelle B - für bezahlte Gebühren:

id | fee_id | student_number | payment_status

Also, was ich versuche zu tun ist das, ich möchte die Gebührentabelle für alle Gebühren durchlaufen und dann zu der bezahlten Gebührentabelle gehen, um zu überprüfen, ob die fee_id gibt es dort in Bezug auf die Studentennummer und wo der Zahlungsstatus nur 1 ist, d. H. Bezahlt.

Wenn die fee_id vorhanden ist, sollte sie als bezahlte die bezahlten markieren und sie in einem Array als bezahlt speichern.

Dann, wenn es nicht existiert, sollte es sie in einem anderen Array als nicht bezahlte speichern.

Hier ist mein Code:

// Fetch All fees for that level, semester and acamedic year 
     $fees = DB::table('fee') 
      ->where([ 
       ['fee.Department','=',$csl->departmentid], 
       ['fee.Semester','=',$csl->semesterid], 
       ['fee.StudentLevel','=',$csl->levelid] 
      ]) 
      ->select('id') 
      ->get(); 
    } 

    //return $fees; 

    $feeids = array(); 
    foreach($fees as $fee){ 
     $feeids[] = $fee->id; 
    } 
    //dd($feeids); 

    // Select all from paid fees 
    $paidFees = PaidFees::all(); 

    $paidFeeIds = array(); 
    foreach($paidFees as $pd) { 
     $paidFeeIds[] = $pd->FeeId; 
    } 
    $status = ""; 
    if(in_array($feeids, $paidFeeIds)) { 

     $status = "paod"; 
    }else { 
     $status = "Not Paid"; 
    } 

Dies ist der Teil, wo ich bin verwirrt.

Antwort

1

Wenn Sie eine Reihe bezahlter Gebühren-IDs und eine Reihe nicht bezahlter Gebühren-IDs benötigen, können Sie Eloquent verwenden.

Zunächst definieren eine Beziehung:

public function paidFees() 
{ 
    return $this->hasMany(PaidFees::class, 'fee_id'); 
} 

Dann erhalten IDs:

$paidFeesIds = Fee::whereHas('paidFees', function($q) { 
    $q->where('payment_status', 1); 
})->pluck('id')->toArray(); 

$notPaidFeesIds = Fee::whereNotIn('id', $paidFeesIds)->pluck('id')->toArray(); 
+0

ich die entrichteten Gebühren Modell haben, sollte ich definieren die Beziehung dort oder in der Steuerung oder dem Modell ich bin Ich werde die Beziehung in definieren, ich habe zwei Modelle, 1. PaidFees und 2. Fee –

+0

@AdewumiGabriel müssen Sie es in 'Fee' Modell definieren. –

+0

Ok ich habe die IDs, aber können Sie erklären, was dieser Code tut –

Verwandte Themen