Ancak sizin gibi bunu yapabilirsiniz. Bir model have tek bir tablo ile sınırlı olmak değil, sen JOIN, UNION ve yerden istersen tablo UPDATE.
Donny Kurnia önerileri ilerletmek için, çok iyi bir mevcut MY_Model zaten birkaç almak, saymak, insert, vb yöntemler içeren (OFC kendimden birkaç katkılarıyla) Jamie Rumbleow tarafından yazılmıştır. Bunlar MY_Model uzanan boş bir model oluşturarak basit, en temel CRUD gereksinimleri yapmak izin verir.
Bu bir tablo get / insert / delete için harika ama katılmadan gerektiren yöntemleri oluşturmaya gelince, yapılacak en iyi şey sadece bunları kendiniz yazmak edilir.
Tabloları birleştirmek tablo adları / aliases dayanıyor NEREDE ayarlamak gerekir ve eğer dikkatli değilseniz tüm MY_Model sorgular katıldı yönetmek için genel bir çözüm oluşturma ya ÇOK zor ya da sadece olacak çakışan alan adlarını bulacaksınız Bir karmaşa.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Tickets_m extends MY_Model
{
// Basic get, insert, delete stuff handled in MY_Model
function get_client_tickets($category_slug = '')
{
$this->db->select('t.*')
->select('c.title as category_title, c.slug as category_slug')
->select('p.name as priority_name')
->join('categories c', 'c.id = t.category_id')
->join('priorities p', 'p.id = t.priority_id')
->from('tickets t')
->where('c.client_id', CLIENT_ID);
if($category_slug)
{
$this->db->where('c.slug', $category_slug);
}
return $this->db->get()->result();
}
function get_client_ticket($id)
{
$this->db->select('t.*')
->select('c.title as category_title, c.slug as category_slug')
->select('p.name as priority_name')
->join('categories c', 'c.id = t.category_id')
->join('priorities p', 'p.id = t.priority_id')
->from('tickets t')
->where('c.client_id', CLIENT_ID)
->where('t.id', $id);
return $this->db->get()->row();
}
function insert($ticket)
{
$this->load->helper('date');
$ticket['created_on'] = now();
return parent::insert($ticket);
}
}
İşte bunlardan bazı özel olması katılır yöntemleri ve ekstra veri güncelleme, bana olsun, get_by, insert için MY_Model kullanımını birleştirerek gösterir anda ile çalışıyorum çok basit bir modelinin bir örneğidir.
Sen de bana otomatik oluşturma veya bilet güncelleme olabilir her denetleyici bunu ayarlamak gerek kalmadan oluşturulan tarih eklemek için insert () yüklenme görebilirsiniz.
Hatta daha büyü oto-matik doğrama delilik gerekiyorsa, Doctrine veya DataMapper gibi bir şey ile ORM deneyin