2017-05-30 4 views
1
übereinstimmen

Ich baue Laravel 5.4 Web-Anwendung, und ich habe unter Datenbanktabelle:Datenbank wählen ein gemeinsames Feld, wenn die Bedingungen

================================== 
product_id|attribute_id|option_id 
================================== 
1   | 1   | 1 
1   | 2   | 3 
1   | 4   | 10 
2   | 1   | 1 
2   | 2   | 4 
... etc 

So einreichen i Form mit Attributen id und Optionen id, so kann ich von ihm bauen Array oder Wasauchimmer.

Was ich erreichen will, dass ich aus der Datenbank wählen Sie die product_id, die zum Beispiel genaue Kombination entsprechen:

[ 
attribute_id => 1, 
option_id => 1 

attribute_id => 2, 
option_id => 3 

attribute_id => 4, 
option_id => 10 
] 

Dieser Zustand nur mit product_id zu Produkt anwenden = 1

Sie wissen nicht, wenn Ich kann es tun, Datenbankabfrage oder durch PHP.

+0

was möchten Sie ist wie Ihr Beispiel? –

+0

@MahmoudMustafa, Wenn meine Antwort richtig ist, bitte markieren Sie sie so, dass andere Leute sie schnell finden können. – GoogleMac

Antwort

1

Zuerst erstellen Sie ein Modell, das Ihre Daten widerspiegelt. Dann verwenden Sie den Eloquent Query Builder, um die Daten zu erhalten, die Sie suchen. Wenn Sie nur eine Zahl benötigen, die die Übereinstimmung liefert, stellen Sie sicher, dass Sie am Ende die Abfrage "-> distinct()" hinzufügen.

Sie können auch ein Array von Bedingungen an die Where-Klausel übergeben.

Ihr Code wie folgt aussehen kann:

$match = DB::table('products') 
       ->where('attribute_id', 1) 
       ->where('option_id', 1) 
       ->distinct() 
       ->get(); 

https://laravel.com/docs/5.4/queries#introduction

1

Wenn Sie nur das Produkt mit product_id wollen = 1 vorausgesetzt Sie haben diese gespeichert in "product_attribute_option" Tabelle und seine Felder Produkt-ID | Attribut-ID | option_id wie du gezeigt hast.

 $query = DB::table('product_attribute_option as pao'); 
     $query->where('pao.product_id', 1); 
     $results = $query->get(); 
Verwandte Themen