2017-07-19 17 views
0

を持っているこれは私のコードです:laravelフィルタ関係条件whereHasと機能では、問題

public function getInvoiceOfTransactioncCompleteItems($userid) 
{ 
    return $user_invoice = 
    $this->model->with([ 
     'items.itemStatus' => function($q) { 
     $q->where('item_statuses_id', '=', '12'); 
     }, 
     'items', 
     'items.product', 
     'items.product.user', 
     'items.rating', 
     'items.rating_comment' 
    ]) 
    ->where('user_id',$userid) 
    ->orderBy('created_at','desc') 
    ->paginate(3); 
} 

私はそれが([ 'items.itemStatus' =>関数($ qを){ $で(私だけを与えたいですQ->ここで、(、 '='、 '12' 'item_statuses_id');

が、それは私のすべてのものが、items.itemStatusの列配列を与えるがitem_statuses_id」、 '='、 '12'

除いて空になっています

他のアイテムは必要ありません。ただitem_statuses_id '、' = '、' 12 'アイテムが必要です

私のJSON

https://docs.google.com/document/d/1o_V0MRu1somd3rMuzaCtvVY5twhrIBHYfD_N2Fhw9O8/edit?usp=sharing

私のコード https://docs.google.com/document/d/1YadZmU0Q_OO5himc8JUsFT6vUcZmG4A3D3OjmsG5VdY/edit?usp=sharing

+0

私はJSONが可能 https://docs.google.com/document/d/1nYKXav7qriJnLIkutmETRmn519lJanwYVdJqTyjuSFw/edit?usp=sharing –

+0

たいの代わりに使用してのメインクエリに参加して、書き込みWHERE条件を使用することを検討してください – haakym

+0

私はしようとしていますが、混乱しています、なぜ、どこでそれはできません。 –

答えて

0

あなたが言った:私がしようとしたが、混乱、なぜ持つか、カントはそれを

を行うwhereHas

私は100%確信していませんが、私はあなたがpla with()の条件をサブクエリに変更するのではなく、メインクエリに条件を設定すると意味がありますか?

あなたがより良いアイデアを得るために希望の場合は、何が起こっているのより良いアイデアを得るためにあなたのクエリにtoSql()を実行して、クエリをデバッグしてみてください...

$this->model->with([ 
    'items.itemStatus' => function($q) { 
     $q->where('item_statuses_id', '=', '12'); 
     }, 
     'items', 
     'items.product', 
     'items.product.user', 
     'items.rating', 
     'items.rating_comment' 
    ]) 
    ->where('user_id',$userid) 
    ->orderBy('created_at','desc') 
    ->toSql(); 

はその後を見てみましょうSQLの出力。

0
I try other method 

query order table 
user->invoice 
invoice ->item 
item->itemStatus condition status =12 
get itemStatus 's item id 
Item::with('invoice')->whereIn([]) 

but how can I reverse 

it will be 
{ 
item_id, 
invoice:{invoice_id:1} 
} 
I want be 
{ 
invoice_id, 
items:[{item_id:1,item_id:2}] 
} 
and invoice same will merge 
+0

私はそれを解決しました~~~ –