2017-08-02 8 views
1

私はタイムスタンプフィールド、という名前の閉じたという名前の、多対多関係のピボットテーブルにあります。私はが0であるか特定の時間より短い項目を取得したいと思います。 は、私は次のことを試してみました:Laravel eloquentここでピボットのヌル以下

// In model 
public function jobEquipments($job, $one = false) 
    { 
     $nowDt = Carbon::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s')); 
     if (!$one){ 
     return $this->belongsToMany(Equipment::class, 'cavity_actions', 'cavity_id', 'equipment_id') 
       ->wherePivot('job_id', $job) 
       ->withPivot('created_at','aid') 
       ->wherePivot('closed',null) 
       ->orWherePivot('closed','<',date('Y-m-d H:i:s')) 
       ->orderBy('pivot_created_at', 'desc'); 
      } 
.... 

私はまた、しかし、クエリ結果に変化が無いorWherePivot$nowDt代わりのdate('Y-m-d H:i:s')を使用しようとしました。つまり、->orWherePivot('closed','<',date('Y-m-d H:i:s'))句がないと同じ値のように見えます。私のデータベースでは、クローズド日時の値がNow未満の十分なレコードがあることは確かです。

答えて

2

orステートメントの分離を試みてください。これを試してみてください:未定義のメソッドを照らし\ Databaseへ

$this->belongsToMany(Equipment::class, 'cavity_actions', 'cavity_id', 'equipment_id') 
       ->wherePivot('job_id', $job) 
       ->withPivot('created_at','aid') 
       ->where(function ($q) { 
        $q->where('cavity_actions.closed',null) 
         ->orWhere('cavity_actions.closed','<',date('Y-m-d H:i:s')); 
       }) 
       ->orderBy('pivot_created_at', 'desc'); 
+0

'コール\クエリー\ビルダー:: orWherePivotを()' – SaidbakR

+0

[OK]を、どこで、orWhere使用するようにしてください。私は答えを編集しました – Laerte

+0

最後の編集は動作しますが、分離されていないと見なされたコードと同じ結果を返します。 – SaidbakR

関連する問題