2017-12-21 18 views
1

非常に速いもので、私が取り組んでいるこの学校プロジェクトはありますが、何か問題があるようです。テーブルに行が存在するかどうかを調べるためにlaravelの2つのテーブルを比較する

私が持っている:

表A - 料金について:

id | feename | fee_level | fee_acad_year 

表B - 支払われた報酬のために:

id | fee_id | student_number | payment_status

をだから私は何をしようとしていますそれは、すべての手数料の手数料表をループして、手数料表に移動して、fee_idが生徒の番号と支払いステータスが1のみであるためにそこに存在します。

fee_idがある場合は、支払い済みのものとして支払うものとしてマークし、有料のものとして配列に格納する必要があります。

もしそれが存在しなければ、それは有料のものではなく別の配列にそれらを格納すべきです。ここで

は私のコードです:

// 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"; 
    } 

これは私が混乱している部分です。

答えて

1

有料の有料IDと有料のIDの配列が必要な場合は、Eloquentを使用できます。

まず、関係定義:

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

次に取得のID:

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

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

私が支払われた報酬のモデルを持っているが、私はそこまたはコントローラまたはどのモデル私はで関係を定義する必要があります私は関係を定義するつもりですが、私は2つのモデルを持っています。1. PaidFeesと2。 –

+0

@AdewumiGabrielあなたは 'Fee'モデルでそれを定義する必要があります。 –

+0

私はIDを持っていますが、そのコードが何をしているのかを説明できます –

関連する問題