SQL ve CodeIgniter

2 Cevap php

Şu anda (CodeIgniter yeni am) CodeIgniter ile bir kitap envanter sistemi oluşturma ve etiketleri zorunda kitapların her istiyoruz.

Şu anda, 4 tablo var:

  1. Kitaplar
  2. Etiketler
  3. KitaplarEtiketler (matches bookid to tagid)
  4. Koleksiyonlar (serisi koleksiyonu)

Tüm kitapları gösterir ana görünümünde için kontrolör olarak, ben bu çağrı:

$this->db->select('*');  
$this->db->from('books'); 
$this->db->join('collections', 'collections.collectid= books.collectionid');
$data['query'] = $this->db->get();

Katılmak beni her kitap çok ait koleksiyon yardımcı olur.

Yani görünümünde, ben sorgu döngü ve tüm kitaplarını almak ve bir tablo biçiminde gösterilecek. Ne başarmak için umut ediyorum her kitabın altında bir satır eklemek ve etiketleri koymaktır. My SQL becerileri eksiktir ve ben normalde sadece select tabloların bir sürü koymak istiyorsunuz, ama ben denetleyicisi tüm işi yapmak istiyorum. Ben farklı şeyler birkaç teşebbüs, ama aracılığıyla döngüsü gibi her kitap için tüm etiketleri nasıl emin değilim.

Herhangi bir yardım büyük mutluluk duyacağız.

Teşekkürler!

2 Cevap

Kontrolörün içinde döngü gerçekleştirin gibi:

$this->db->select('*');  
$this->db->from('books b'); 
$this->db->join('collections c', 'c.collectid= b.collectionid');
$books = $this->db->get()->result;
foreach($books as $book) {
     $this->db->select('*');  
     $this->db->from('Tags t'); 
     $this->db->join('BooksTags bt', 't.tagid= bt.tagid');
     $this->db->where('bt.bookid', $book->bookid);
     $book->tags = $this->db->get()->result;
}
$data['books'] = $books;

Sonra görünümden yaparsın gibi bir şey:

<?php foreach($books as $book): ?>
<?= $book->name ?>  has the following tags: 
  <?php foreach($book->tags as $tag): ?>
  <?= $tag->name ?>
  <?php endforeach; ?>
<?php endforeach; ?>

Ayrıca model tüm DB kodu hareketli düşünmelisiniz.

sorguları yüzden bunu modele ait:

function get_books()
{
  $this->db->select('*');  
  $this->db->from('books b'); 
  $this->db->join('collections c', 'c.collectid= b.collectionid');
  return $this->db->get()->result;
}

sonra denetleyicisi böyle çağırır:

$books = $this->Model__name->get_books();

foreach ...

ve görünümünde kod :) aynı kalır