2017-03-01 1 views
0

Mein DB ist:Laravel DB-Abfrage eine Reihe von Ergebnissen unterscheidet sich von direkten MySQL-Abfrage gibt

|category_id|category_slug |category_name |parent_category_id| 
|1   |Main Category1|Main Category1|0     | 
|2   |Main Category2|Main Category2|0     | 
|3   |Sub Category1 |Sub Category1 |1     | 
|4   |Sub Category2 |Sub Category2 |1     | 
|5   |Sub Category3 |Sub Category3 |2     | 

Ich versuche, die folgende Abfrage in MySQL

SELECT * 
FROM categories AS subcategory 
JOIN categories AS parent ON parent.category_id = subcategory.parent_category_id 
WHERE subcategory.category_display_type = 'sidebar' 
    AND subcategory.category_visibility = 1 

wie so auszuführen:

class SidebarnavComposer 
{ 
    public function compose(View $view) 
    { 
     $params = DB::table('categories as subs')->join('categories as cats', function($join){ 
       $join->on('subs.parent_category_id', '=', 'cats.category_id') 
       ->where('subs.category_display_type', '=', 'sidebar') 
       ->where('subs.category_visibility', '=', 1); 
    })->get(); 


     $view->with('subcategories', $params); 

    } 

das Problem ist, dass ich andere Reihe von Ergebnissen bekomme.

Als ich die erste Abfrage direkt in MySQL verwenden, erhalte ich folgend:

category_id 
category_id1 
category_title 
category_title1 
category_slug 
category_slug1 
....... 

, wenn ich die zweite Abfrage in meiner Laravel Anwendung ausführen bekomme ich folgenden Satz von Ergebnissen:

category_id 
category_title 
category_slug 
....... 

Das bedeutet im Grunde, dass ich nicht auf alle notwendigen Spalten zugreifen kann.

Also, was ich muß in der Lage sein zu tun ist, URI für meine Unterkategorien in der folgenden Art und Weise zu bauen:

category_slug1/category_slug 

wo category_slug1 Hauptkategorie Slug ist und category_slug Unterverzeichnis Slug ist. Das Problem ist, dass ich nur die Hauptkategorie Slug und nicht Slug für meine Unterkategorie in URI bekommen kann.

Ich bin nicht sicher, was ich falsch mache, wie ich bin neu in Laravel und im Moment nicht wirklich wissen viel, so helfen Sie mir bitte, wenn Sie können

Antwort

1

verwenden:

$data = DB::table('categories AS subcategory') 
     ->join('categories AS parent', 'parent.category_id', '=', 'subcategory.parent_category_id') 
     ->where('subcategory.category_display_type', '=', 'sidebar') 
     ->where('subcategory.category_visibility', '=', 1) 
     ->select('subcategory.category_slug AS category_slug1', 'parent.category_slug AS category_slug') 
     ->get(); 
+0

Hallo Naincy, ich bekomme den folgenden Fehler: 'code'SQLSTATE [42S22]: Spalte nicht gefunden: 1054 Unbekannte Spalte' subcategory.parent_category_id 'in' on clause '(SQL: wähle 'subcategory'. *,' Parent'. * From ' Kategorien "als" Unterkategorie "innerer Join" Kategorien "als" Elternteil "auf" Elternteil ".' category_id' = 'Unterkategorie'.'parent_category_id' where 'Unterkategorie'.''Category_Display_Type' = Seitenleiste und' Unterkategorie'.'Category_Visibility' = 1) – AlexB

+0

@AlexB Sie können es nach Ihrer DB ändern ... das ist etwas, das ich nur von Ihrer Frage genommen habe ... bitte sehen Sie den genauen Feldnamen aus Ihrem DB – Naincy

+0

Ich habe den Tippfehler korrigiert, aber die Ergebnisse, die ich bekomme, sind die Das selbe, damit ich nur die Ergebnisse für die Hauptkategorien erhalte und was ich wirklich brauche, ist der Zugriff auf beide Kategorien und Unterkategorien, um den URI erstellen zu können, der category_slug/subcategory_slug enthalten wird. Um sowohl category_slug als auch subcategory_slug zu verdeutlichen, gibt es dieselbe Spalte 'category_slug', aber die Abhängigkeit sollte eingreifen und die Ergebnisse trennen. – AlexB

Verwandte Themen