Model
Model'ler genellikle veritabanı işlemlerinin yapıldığı nesnelerdir. /App/Models
dizininde bulunurlar. Sadece veritabanı işlemlerini değil, harici olarak dahil edilebilecek farklı kodlar da içerebilirler.
Model nesnesi ile veritabanı sorguları çalıştırma hakkında ayrıntılı bilgi için kılavuzdaki Database başlığını ziyaret edebilirsiniz.
Model Oluşturma
Model dosyaları /App/Models
dizininde yer almalıdır. Aşağıda basit bir model örneği görülmektedir;
//--- [*] App/Models/Blog.php ---//
namespace App\Models;
use DB;
class Blog
{
public function posts()
{
return DB::select('*')->from('posts')->getAll();
}
}
Model Kullanımı
Oluşturulan bir model'in methodlarına erişmek için Model
nesnesi kullanılır.
Aşağıdaki örnekte, Blog controller'ı içerisinde, yukarıda oluşturulan Blog modeline ait posts()
methodu çalıştırılıyor. Bunun için de Model
nesnesi kullanılıyor.
//--- [*] /App/Controller/Blog.php ---//
namespace App\Controllers;
use View;
use Model;
class Blog
{
public function index()
{
$data['posts'] = Model::run('blog')->posts();
View::render('blog', $data);
}
}
Model'de Namespace Kullanımı
Model dosyaları, /App/Models
dizini içerisinde oluşturulacak alt dizinlerde de bulunabilir. Böyle durumlarda, alt dizin içerisinde oluşturulan model dosyasının namespace'i App\Models\Alt_Dizin
şeklinde olmalıdır.
//--- [*] /App/Models/Frontend/Home.php ---//
namespace App\Models\Frontend;
class Home
{
public function foo()
{
return 'bar';
}
}
Yukarıdaki örnekte yer alan model'e erişmek ve içerisindeki herhangi bir methodu çalıştırmak için, Model
nesnesinin run()
methoduna, ikinci parametre olarak namespace
adı girilmelidir.
//--- [*] /App/Controller/Frontend/Blog.php ---//
namespace App\Controllers\Frontend;
use Model, View;
class Blog
{
public function posts()
{
$data['posts'] = Model::run('blog', 'frontend')->posts();
View::render('home', $data);
}
}
Yukarıdaki örnekte /App/Controllers/Frontend
dizinindeki Blog
controllerı içerisinde, önceki örneklerde oluşturulan ve /App/Models/Frontend
dizininde yer alan Blog
modeli kullanılıyor ve posts()
methodu çalıştırılıyor.