2017-05-19 5 views
2

Ich habe versucht, herauszufinden, wie man Elemente überprüfen, ob einer von einer Spalte in einer anderen Spalte in Codeigniter ....Codeigniter überprüfen, ob ein Spalt Artikel in einer anderen Spalte

Ich habe Fahrrad, Auto, Bus in einer Spalte (Fahrzeuge) in einem tabelle1 ... ich habe auch Bus, Hubschrauber, Schiff, Auto in einer Säule (interessiert) in table2 ..

Wie, wenn eine der table2 interessiert Spalte Artikel in table1 vorhanden überprüfen Fahrzeugspalte ...

Ich versuchte so ...

$query = $this->db->get('table2'); 
foreach($query->result() as $row) 
{ 
    $a = explode(',', $row->interested); 
    $this->db->where_in('Vehicles', $a); 
    $query = $this->db->get('table1'); 
    foreach($query->result() as $row2) 
    { 
     echo $row2->ID; 
    } 
} 

Könnte es getan werden ?? Bitte helfen Sie mir ... Vielen Dank im Voraus ....

+0

ich Sie 'explode' verwenden sehen. Hat das 'interesse'-Feld einen Textdatentyp? – Ukasyah

Antwort

2

Es ist sehr schwer, Ihnen zu helfen, ohne die Tabellen zu sehen und wie Sie einander in Verbindung bringen (wie zum Beispiel user_id).

Was Sie tun sollten, ist zwei Abfragen. Eine Abfrage, um die Daten aus Tabelle 1 der Fahrzeuge, die Sie interessieren, zu erhalten. Dann durchlaufen Sie die Ergebnismenge und erstellen Sie ein einfaches Array dieser Fahrzeuge in PHP. Führen Sie dann eine zweite Abfrage mit where_in durch, um alle Zeilen auszuwählen, die sich im ausgewählten Fahrzeug-Array befinden.

Ihre Methode ist schlecht, da die Anzahl der DB-Abfragen von der Größe der Ergebnismenge Ihrer ersten Abfrage abhängt. Möglicherweise finden Sie in Ihrem Code Hunderte von Datenbankabfragen.

Wenn Sie ein Diagramm Ihrer Tabellen anzeigen, könnte ich einen Beispielcode für Sie schreiben.

Hier sind die Dokumente für where_in: https://www.codeigniter.com/user_guide/database/query_builder.html#CI_DB_query_builder::where_in

Verwandte Themen