2017-07-19 3 views
0

Dies ist mein Code:Laravel Filtervergleichsbedingung whereHas und mit Funktionsprobleme haben

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); 
} 

Ich will es mir nur geben (mit ([ 'items.itemStatus' => function ($ q) {$ q-> where ('item_statuses_id', '=', '12');

aber es gibt mir alle Sachen, aber items.itemStatus Spalte Array leer sind außer item_statuses_id‘, '=', '12'

Ich möchte keinen anderen Artikel, nur item_statuses_id ',' = ',' 12 'Artikel

mein json

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

meinen Code https://docs.google.com/document/d/1YadZmU0Q_OO5himc8JUsFT6vUcZmG4A3D3OjmsG5VdY/edit?usp=sharing

+0

Ich will mein json sein https://docs.google.com/document/d/1nYKXav7qriJnLIkutmETRmn519lJanwYVdJqTyjuSFw/edit?usp=sharing –

+0

Betrachten Sie eine Verknüpfung mit und auf der Hauptabfrage wo Bedingung schreiben anstelle von mit – haakym

+0

Ich versuche, aber verwirrt, warum mit oder woHas kann es nicht tun –

Antwort

0

Sie sagte:

ich versucht, aber verwirren, warum mit oder whereHas kippe tun es

Ich bin mir nicht 100% ig sicher, aber ich denke wenn du da bist ce eine Bedingung auf with() Sie ändern eine Unterabfrage anstatt eine Bedingung auf die Hauptabfrage - macht das Sinn?

Wenn Sie eine bessere Vorstellung davon bekommen möchten, versuchen Sie bitte Ihre Abfrage Debuggen von toSql() auf Ihre Abfrage ausgeführt wird eine bessere Vorstellung davon zu bekommen, was los ist ...

$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(); 

einen Blick dann auf die SQL-Ausgabe.

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

Ich löste es dank ~~~ –

Verwandte Themen