Dev Model Genişletmesi
"ZN Framework düzenlenebilir dizin yapısı ile kendi kod çatınızı oluşturmanıza imkan veren dünyadaki tek kod çatısıdır."
(ZN >= 5.3.7)
Grand genişletmesi veritabanı yöntemlerini tablo düzeyine indirgeyerek daha pratik model kütüphaneleri geliştirmenize olanak sağlar. Hemen hemen DB::, DBForge:: ve DBTool:: kütüphanelerinde yer alan yöntemlerin çoğu bulunmaktadır. Bu başlık altında Grand genişletmesinin nasıl yapılacağını gösterilecektir.
# Bölüm Başıkları
# Grand Model Dosyası Oluşturmak
# Grand Kütüphanesi ile Gelen Yöntemler
# Grand Model Dosyası Oluşturmak
Grand ile genişleteceğiniz model dosyalarınızın sınıf adı, ilgili tablonun ismi ile kullanılmalıdır. Tablo adınızın mevcut kütüphanelerden birinin ismi ile çakışma durumu söz konusu ise sonuna model sınıfı adının sonuna Grand son eki getirebilirsiniz. Ya da const table = 'tablo_adi' sabiti ile ilgili tablonun adını belirtebilirsiniz. Eğer farklı bağlantı ayarlar yapacaksanız const connection = [] sabiti dizisi ile yapabilirsiniz. Şimdi örnek bir Grand Model dosyası oluşturalım.
String | table = __CLASS__ | Sınıf adı tablo isminden farklı ise bu sabite tablo ismi verilmelidir. Ön tanımlı olarak class adı kabul edilmiştir. |
Array | connection = [] | Eğer tablonuz farklı bir veritabanında ise ve bağlantı ayarları yapılması gerekiyorsa bu sabit yapılandırılmalıdır. |
<?php
class Users extends GrandModel
{
}
Tablo adı ile sınıf adı farklı ise table sabiti ile tablo adı belirtilmelidir.
<?php
class Accounts extends GrandModel
{
const table = 'Users';
}
Farklı bir veritabanı ile bağlantı kurulacaksa const connection = [] sabiti dizisi kullanabilirsiniz.
<?php
class UserGrand extends GrandModel
{
const table = 'Example';
const connection =
[
'database' => 'otherDatabase',
'user' => 'MyDB',
'password' => '1234'
];
}
Eğer Tablo adının bir sınıf adı ile çakışma ihtimali söz konusu ise sınıf adının sonuna Grand son eki getirilerek kullanılması tavsiye edilir.
class UserGrand extends GrandModel
{
}
Internal ön eki kullanımlı model dosyaları da tanımlayabilirsiniz. Internal ön eki tablo adının eşleşmesini engellemez.
class InternalUserGrand extends GrandModel
{
}
Yukarıdaki kullanımda tablo adı "user" olarak kabul edilecektir.
Model dosyalarınızı aşağıdaki konsol komutu ile oluşturmanız da mümkündür.
php zerocore create-grand-model {name}
# Grand Kütüphanesi ile Gelen Yöntemler
Grand Kütüphanesi DB::, DBForge:: ve DBTool:: sınıflarının yöntemlerini kullanılır. Bu yöntemler Database Kütüphanesi bölümünde yeteri kadar örneklendirildiği için tekrar örneklendirilmeyecektir. Sadece model kütüphanesi ile nasıl kullanılabileceği üzerine örnek verilecektir.
# Create (ZN >= 5.3.72)
Yukarıda oluşturulmuş InternalUserGrand modeli gibi bir model sınıfı oluşturduğumuzu varsayarsak yukarıda belirtilen yöntemleri bu kütüphane ile kullanabiliriz. Kolonları yöntem olarakta kullanabilirsiniz. Bu kullanım ile birlikte create() yönteminin 1. parametresi artık aynı yöntemin 2. parametresi gibi kullanılır.
Array | $data | Tablo kolon ve değer bilgileri. |
Array | $extras | Tablo oluşturma işleminin sonuna eklenecek ifadeler. |
Return | Bool |
<?php
class InternalUserGrand extends GrandModel
{
}
UserGrand::id([DB::int(11), DB::primaryKey(), DB::autoIncrement()])
->name([DB::varchar(255), DB::null()])
->address([DB::text()])
->create(DB::encoding())
(
id INT(11) PRIMARY KEY AUTO_INCREMENT ,
name VARCHAR(255) NULL ,
address TEXT
)
CHARACTER SET utf8 COLLATE utf8_general_ci ;
# Insert (ZN >= 5.3.7)
Tabloya veri eklemek için kullanılır. Veri eklenecek kolonlar yöntem olarak da kullanılabilir. Aşağıdaki örnek bu kullanımın üzerinedir.
Array | $data | Eklenecek veriler. |
Return | Bool |
UserGrand::name('ZN Framework')->address('Istanbul')->insert();
output(UserGrand::result());
(
id => string '1' ( length = 3 )
name => string 'ZN Framework' ( length = 14 )
address => string 'Istanbul/Turkey' ( length = 17 )
)
Eğer gelen veri post veya get gibi bir gönderim ile forumdan yapılıyor ve forum girdi isimleri kolon adı olarak kullanılmışsa aşağıdaki gibi çok daha basit insert işlemi yapılabilir.
UserGrand::insert('post');
# InsertID (ZN >= 4.0.1)
Son eklenen verinin ID değerini verir.
Void | ||
Return | Int |
UserGrand::insert
([
'name' => 'ZN Framework',
'address' => 'Istanbul/Turkey'
]);
output(UserGrand::insertID());
# DuplicateCheck (ZN >= 4.0.1)
Daha önce insert edilmiş bire bir aynı veri varsa tekrar ekleme yapmaz.
String | ...$args = NULL | Hangi kolonların kontrol edileceği belirtilir. Kolon belirtilmezse tüm kolonlar kontrol edilir. |
Return | This |
UserGrand::duplicateCheck()->insert
([
'name' => 'ZN Framework',
'address' => 'Istanbul/Turkey'
]);
output(UserGrand::result());
(
id => string '1' ( length = 3 )
name => string 'ZN Framework' ( length = 14 )
address => string 'Istanbul/Turkey' ( length = 17 )
)
# DuplicateCheckUpdate (ZN >= 4.3.7)
Daha önce insert edilmiş bire bir aynı veri varsa tekrar ekleme yapmaz. Bunun yerine güncelleme yapar.
String | ...$args = NULL | Hangi kolonların kontrol edileceği belirtilir. Kolon belirtilmezse tüm kolonlar kontrol edilir. |
Return | This |
UserGrand::duplicateCheckUpdate()->insert
([
'name' => 'ZN Framework',
'address' => 'Istanbul'
]);
output(UserGrand::result());
(
id => string '1' ( length = 3 )
name => string 'ZN Framework' ( length = 14 )
address => string 'Istanbul' ( length = 17 )
)
# Select (ZN >= 4.0.1)
Sorgu sonuçlarında hangi kolonların gözükeceğine karar vermek için kullanılır.
String | ...$columns | Hangi kolonların istendiği. Bu parametre belirtilmezse tüm kolonlar listelenir. |
Return | This |
$result = UserGrand::select('id', 'name')->result();
output($result);
(
id => string '1' ( length = 3 )
name => string 'ZN Framework' ( length = 14 )
)
# UpdateColumnName (ZN >= 4.5.1)
Tabloda belirtilen kolon son ekine göre veriyi güncellemek için kullanılır.
Parametreler
Array | $data | Güncellenecek veriler. |
Scalar | $value | Kolon değeri. |
Return | Bool |
UserGrand::updateId
([
'name' => 'ZERONEED',
'address' => 'Istanbul/Turkey'
], 1);
Harf duyarlılığı açık ve tablodaki kolon adı id ise kullanım aşağıdaki gibi olmalıdır:
UserGrand::updateid
([
'name' => 'ZERONEED',
'address' => 'Istanbul/Turkey'
], 1);
# Update (ZN >= 5.3.7)
Tabloda herhangi bir veriyi güncellemek için kullanılır. Veri güncellenecek kolonlar yöntem olarak da kullanılabilir. Aşağıdaki örnek bu kullanımın üzerinedir.
Array | $data | Güncellenecek veriler. |
String | $column | Kolon adı. |
Scalar | $value | Kolon değeri. |
Return | Bool |
UserGrand::name('ZN')->address('Istanbul/Turkey')->update();
output(UserGrand::result());
(
id => string '1' ( length = 3 )
name => string 'ZN' ( length = 10 )
address => string 'Istanbul/Turkey' ( length = 17 )
)
Eğer gelen veri post veya get gibi bir gönderim ile forumdan yapılıyor ve forum girdi isimleri kolon adı olarak kullanılmışsa aşağıdaki gibi çok daha basit update işlemi yapılabilir.
UserGrand::update('post', 'id', 5);
# DeleteColumnName (ZN >= 4.5.1)
Tabloda belirtilen kolon son ekine göre veriyi silmek için kullanılır.
String | $value | Kolon değeri. |
Return | Bool |
UserGrand::deleteId(1);
# Delete (ZN >= 4.0.1)
Tabloda herhangi bir veriyi silmek için kullanılır.
String | $column | Hangi kolon. |
Scalar | $value | Kolon değeri |
Return | Bool |
UserGrand::delete('id', 1);
output(UserGrand::result());
# RowColumnName (ZN >= 4.4.7)
Tabloda yer alan herhangi bir kolon adına göre 1 satır kayıt almak için kullanılır.
String | $value | Kolon değeri. |
Return | Object |
output( UserGrand::rowId(1) );
output( UserGrand::rowName('example') );
output( UserGrand::rowEmail('example@example.com') );
# ResultColumnName (ZN >= 4.4.7)
Tabloda yer alan herhangi bir kolon adına göre kayıtları almak için kullanılır.
String | $value | Kolon değeri. |
Return | Object |
output( UserGrand::resultId(1) );
output( UserGrand::resultName('example') );
output( UserGrand::resultEmail('example@example.com') );
# Result (ZN >= 4.4.7)
DB::get($table)->result() kullanımı gibidir.
output( UserGrand::result() );
# Pagination (ZN >= 4.4.7)
DB::get($table)->pagination() kullanımı gibidir. Bu yöntem result() kullanımına bağlı olarak şekillenir. Yani sayfalama için limitin result() yöntemine verilmiş olması gerekmektedir.
output( UserGrand::limit(NULL, 5)->result() );
output( UserGrand::pagination() );
# AddColumn (ZN >= 5.3.7)
Tabloya kolon eklemek için kullanılır. Standart addColumn() yöntemi kullanılabileceği gibi yöntemsel kolonlar da kullanılabilir. Yöntem ismi ile kolon eklemeniz mümkün. Tek yapmanız gereken yöntem adına eklenecek kolon adını ve parametresine özelliklerini belirtmelisiniz.
Array | $column | Eklenecek kolon ve kolon özellikleri. |
Return | This |
UserGrand::address([DB::text()])->date([DB::datetime()]);
# ModifyColumn (ZN >= 5.3.7)
Tablodaki kolon özelliklerini güncellemek için kullanılır. Yöntem ismi ile kolon güncellemeniz de mümkün. Tek yapmanız gereken yöntem adına güncellenecek kolon adını ve parametresine özelliklerini belirtmelisiniz. Eğer güncellenecek kolon yoksa ekleme işlemi yapar.
Array | $column | Güncellenecek kolon ve kolon özellikleri. |
Return | This |
UserGrand::address([DB::varchar(500)])->date([DB::timestamp()]);
# RenameColumn (ZN >= 5.3.7)
Tablodaki kolon ismini güncellemek için kullanılır. Yöntem ismi ile kolon ismini güncellemeniz de mümkün. Tek yapmanız gereken yöntem adına güncellenecek kolon adını ve parametresine özelliklerini belirtmelisiniz.
Array | $column | Güncellenecek kolon ismi ve kolon özellikleri. |
Return | This |
UserGrand::date(['adddate', DB::timestamp()]);
# DropColumn (ZN >= 5.3.7)
Tablodan kolon silmek için kullanılır. Yöntem ismi ile kolon silmeniz de mümkün. Tek yapmanız gereken yöntem adına silinecek kolon adını parametresini de NULL belirtmelisiniz.
String | $column | Silinecek kolon ismi. |
Return | Bool |
UserGrand::address(NULL)->adddate(NULL);
# Get (ZN >= 6.0.6.0)
Tablo nesnesini almak için kullanılır. DB::get($table) kullanımı gibidir. Yeni bir tablo nesnesine bağlı kullanımların gerekli olması durumunda kullanılabilir.
Void | ||
Return | This |
$tickets = Tickets::limit(NULL, 10)->get();
output( $tickets->result() );
output( $tickets->totalRows() );
output( $tickets->pagination() );