2016-07-24 12 views
0

私は使用できません。理由はわかりません。を使用していますか?または、laravelにエラーがあります

私の目標は、amount_invoice=0 OR total_mileage=0をプルすることです。 WHERE節のみを使用すると、クエリが機能します。 orWhereを追加すると、クエリが失敗します。

このクエリは動作します:

$deliveries = $this->instance->delivery 
     ->where('amount_invoice', 0); 
     //->where('total_mileage', 0); 
     //->where('amount_invoice', 0)->where('total_mileage',0);         
     //->where('amount_invoice', 0)->orWhere('total_mileage', 0); 
dd($deliveries); 

このクエリは動作します:

$deliveries = $this->instance->delivery 
     //->where('amount_invoice', 0); 
     ->where('total_mileage', 0); 
     //->where('amount_invoice', 0)->where('total_mileage', 0); 
     //->where('amount_invoice', 0)->orWhere('total_mileage', 0); 
dd($deliveries); 

このクエリは動作します:

$deliveries = $this->instance->delivery 
     //->where('amount_invoice', 0); 
     //->where('total_mileage', 0); 
     ->where('amount_invoice', 0)->where('total_mileage', 0); 
     //->where('amount_invoice', 0)->orWhere('total_mileage', 0); 
dd($deliveries); 

は、このクエリは動作しません:

$deliveries = $this->instance->delivery 
     //->where('amount_invoice', 0); 
     //->where('total_mileage', 0); 
     //->where('amount_invoice', 0)->where('total_mileage', 0); 
     ->where('amount_invoice', 0)->orWhere('total_mileage', 0); 
dd($deliveries); 
私は問題が何であるかを知らない

けどorWhereを使用しては、モデルとの関係は、私は以来、

$this->instance->delivery 

が戻ってあなたのコレクションを与えることを推測しているように見えるものを知らず

+0

クエリをダンプして、失敗やエラーなどを説明してください。 –

答えて

2

を失敗しましたそれがLaravelの典型です。 ->where(...)はLaravelのコレクションをフィルタリングするように機能しますが、->orWhere(...)はコレクションをフィルタリングしません。

あなたの代わりに

$this->instance->delivery() 

を持っている場合、あなたはその後、->where(...)->orWhere(...)上のクエリを実行するために使用することができ、バッククエリビルダを取得します。最後に->get()コールを追加することを忘れないでください。

+0

@joelhinzが言っているものを拡張するために、 'orWhere()'メソッドはEloquentモデルメソッドであり、コレクションでそれを使用しようとしています。そのため、Laravelドキュメントの「利用可能なコレクションメソッド」を調べてください。ここで、フィルタや拒否メソッドが役立ちます。 https://laravel.com/docs/master/collections#available-methods – Azeame

関連する問題