So unterscheiden Sie Spalten aus verschiedenen Tabellen in einer SELECT-Klausel mithilfe des Abfrage-Builders von CodeIgPhp

PHP-Programmierer chatten hier
Anonymous
 So unterscheiden Sie Spalten aus verschiedenen Tabellen in einer SELECT-Klausel mithilfe des Abfrage-Builders von CodeIg

Post by Anonymous »

Ich erstelle eine Abfrage mit einem JOIN. Dies ist das erste Mal, dass ich DB-Sachen mit dem Abfrage-Builder gemacht habe, und dabei bin ich auf ein kleines Problem gestoßen.
Ich möchte eine Tabelle namens „Unternehmen“ mit der Tabelle „Benutzer“ verknüpfen, damit ich den Namen der Firma usw. erhalten kann, in der sich der Benutzer befindet. Ich habe das irgendwie erfolgreich gemacht:

Code: Select all

function get_profile_by_username($username)
{
$this->db->join('companies', $this->table_name . '.company_id = companies.id');
$this->db->where('LOWER(username)=', strtolower($username));
$query = $this->db->get($this->table_name);
if ($query->num_rows() == 1)
return $query->row();
return NULL;
}
Das Problem besteht jedoch darin, dass die Felder in Unternehmen, sie sind ID und Name, in diesem Objekt einfach als Name zurückgegeben werden.
Normalerweise würde ich beim Schreiben der Rohabfrage den Tabellen Aliase geben und das Ergebnis wäre etwa u.company_id, c.name. Ich wüsste also, dass name nichts mit dem Benutzer zu tun hat, sondern natürlich mit dem Namen des Unternehmens. Und obwohl dies jetzt, aber möglicherweise in der Zukunft kein Problem darstellt, kann die Spalte „id“ offensichtlich nicht in der Ergebnismenge koexistieren, sodass eine Spalte überschrieben wird!
Wie können wir diese Art der Unterscheidung zwischen den Feldern erreichen, die aus bestimmten Tabellen stammen? Oder gibt es eine bessere Möglichkeit, Tabellenverknüpfungen durchzuführen und mit verbundenen Abfragedatensätzen/-objekten zu arbeiten?
Bearbeiten:
Wenn ich es als Rohabfrage machen würde, würde ich Folgendes tun:

Code: Select all

SELECT u.id, u.username, c.name
FROM users AS u
JOIN companies AS c
ON c.id = u.company_id
WHERE u.username = 'foobar';
Das ist großartig, aber wenn ich versuchen würde, diesen Abfrage-Builder zu verwenden, wäre das meiner Meinung nach eine ziemlich schlechte Praxis, wenn es überhaupt funktionieren würde.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post