Ho appena memorizzare i proiettili nella mia tabella di database, in una colonna denominata slug
, quindi trovare un post con la lumaca, in questo modo:
public function view($slug)
{
$query = $this->db->get_where('posts', array('slug' => $slug), 1);
// Fetch the post row, display the post view, etc...
}
Inoltre, per derivare facilmente una lumaca dal titolo del post, basta usare url_title()
del helper URL:
// Use dashes to separate words;
// third param is true to change all letters to lowercase
$slug = url_title($title, 'dash', true);
un piccolo bonus: si potrebbe desiderare di implementare un vincolo di chiave unica per la colonna slug
, che assicura che ogni post ha una lumaca unica quindi non è ambiguo, che dopo CodeIgniter sho uld cercare. Ovviamente, dovresti probabilmente assegnare ai tuoi post titoli univoci, ma metterlo in atto applica la regola e impedisce che l'applicazione si rovini.
Questo è esattamente il modo in cui Lo farei, ma sono un po 'preoccupato per le prestazioni con questo tipo di URL. Supponiamo che tu abbia un URL come quelli di Stackoverflow:/questions/{intero}/{slug}, non è un po 'più efficiente di/questions/{slug}, perché con il primo tipo di URL, potresti semplicemente usare la chiave primaria nel database per una ricerca più rapida. Con l'altro URL, dovresti fare una comparazione delle stringhe, che è sicuramente più lenta. – EsTeGe
@EsTeGe: Esatto. Se le prestazioni sono un problema, ti consigliamo di utilizzare indici/chiavi veloci per le query. Tuttavia, se non è critico o se hai qualche ragionevole memorizzazione nella cache per alleggerire il carico sul database, puoi usare invece slugs. – BoltClock
Oh, non ho pensato alla funzionalità di caching del codeigniter integrata. Questo è basato sull'URL, quindi c'è una query in meno di cui preoccuparsi. – EsTeGe