Wie kann ich aus mehreren Tabellen in CodeIgniter
Ich habe drei Tabellen: (um es einfach zu halten werde ich nur die relevanten Felder)
Articles (id, title, text, author)
Comments (id, article_id, text, author)
Users (user_id, user_type, first_name, last_name, email, password)
In der articles
Tisch, weil ein Autor kann mehrere Artikel, die ich nur speichern des Autors user_id
von der users
Tisch, und ich mache das gleiche für die comments
Tabelle.
Mein problem ist wenn ich ein ActiveRecord-Abfrage in der articles_model, um alle Artikel die zusammen mit diesem Artikel, die zugehörigen Kommentare und dann echo der Autor in meinen Augen mit $row->author
, bekomme ich nur die Autorin user_id 1, 2, 3, etc etc.
Wie gehe ich in der users
Tabelle (andere Tabelle) im gleichen Abfrage und Sie bekommen die Autoren tatsächlichen first_name
und last_name
und Rückkehr?
Hier ist mein code:
Controller:
$data['articles'] = $this->getArticles();
$this->load->view('articles_view', $data);
function getArticles() {
$this->load->model('articles_model');
$articles = $this->articles_model->getAllArticles();
return $articles;
}
articles_model:
function getAllArticles() {
$this->db->where('id', $this->uri->segment(3));
$query = $this->db->get('articles');
return $query;
}
articles_view:
<?php foreach($articles->result() as $row) { ?>
<?php echo $row->author ?>
<?php echo $row->text ?>
<?php } ?>
Ich habe eine Tonne von anderen Bereichen, aber das ist eine extrem abgespeckte version für Einfachheit.
Wenn ich echo die oben $row->author
ich bin nur gehen, um die user_id. Ich brauche, um den Namen des Benutzers aus der users
Tabelle statt. Ich brauche sicher nicht zu tun haben, eine weitere eigene Funktion aufrufen, und übergeben Sie mehr Informationen in den anzeigen. Jede Hilfe wäre hier sehr zu schätzen und würde wirklich eine Welt für mich 🙂
- Ich kann nicht sprechen für CI ' s konkret, aber normalerweise gibt es
join
Methoden der db-Klasse... oder manchmal spezifische join-Methoden, die auf Modelle wiegetWith
oderfindWith
. - Ist die "Autorin" im Artikel und Kommentare Tabelle ist der Fremdschlüssel aus der Tabelle users?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese (oder einfach nur eine Idee):
Bin ich davon ausgegangen, dass
user_id
von Ihremusers
Tabelle foreign key, der beiarticles
undcomments
Tabelle, da Sie sagte, dass die Autoren und Kommentatorenuser_id
gespeichert sind, inusers
Tabelle.Auf Ihrem controller:
Auf Ihr Modell:
Ich bin mir nicht sicher, ob seine Arbeit, aber das ist die Idee.
user_id
Spalte in derarticles
Tabelle ist ein Fremdschlüssel. Jede Datenbank unterstützt Fremdschlüssel.Habe ich eine Lösung gefunden, die funktioniert gut für mich, die ich nach und versuchen zu erklären.
Meine Steuerung ist so:
Wie Sie sehen können, der getComments-Funktion in meinem Modell war der Schlüssel. Es ist die JOIN-Anweisung behandelt, was ich versucht habe zu erreichen. Ich weiß, es gibt wahrscheinlich saubereren und effizienteren Möglichkeiten, dies zu tun, durch die Kombination der beiden Funktionen, aber als Anfänger wollte ich es einfacher zu verstehen.
Hoffentlich kann anderen helfen.