Nitelik Türleri
"ZN Framework'e ait tüm paketler framework dışında da kullanılabilir esneklikte tasarlanmıştır."
(ZN >= 3.0.0)
Bu bölümde veritabanı sürücülerine göre farklılık gösteren nitelik türlerinin nasıl hepsinde ortak kullanılacağını göstereceğiz. Aşağıda veri türlerinin veritabanı platformlarına göre değişimini gösteren tablo yer almaktadır.
MySQL | Postgres | SQLite | SQLServer | ODBC | Oracle |
AUTO_INCREMENT | BIGSERIAL | AUTOINCREMENT | IDENTITY(1,1) | AUTOINCREMENT | CREATE SEQUENCE ... |
PRIMARY KEY | PRIMARY KEY | PRIMARY KEY | PRIMARY KEY | PRIMARY KEY | PRIMARY KEY |
FOREIGN KEY | FOREIGN KEY | FOREIGN KEY | FOREIGN KEY | FOREIGN KEY | FOREIGN KEY |
REFERENCES | REFERENCES | REFERENCES | REFERENCES | REFERENCES | REFERENCES |
UNIQUE | UNIQUE | UNIQUE | UNIQUE | UNIQUE | UNIQUE |
NULL | NULL | NULL | NULL | NULL | NULL |
NOT NULL | NOT NULL | NOT NULL | NOT NULL | NOT NULL | NOT NULL |
EXISTS | EXISTS | EXISTS | EXISTS | EXISTS | EXISTS |
NOT EXISTS | NOT EXISTS | NOT EXISTS | NOT EXISTS | NOT EXISTS | NOT EXISTS |
CONSTRAINT | CONSTRAINT | CONSTRAINT | CONSTRAINT | CONSTRAINT | CONSTRAINT |
DEFAULT | DEFAULT | DEFAULT | DEFAULT | DEFAULT | DEFAULT |
LIKE: % | LIKE: % | LIKE: % | LIKE: % | LIKE: * | LIKE: % |
Yukarıdaki farklılıkları gidermek için bu nitelik türlerine göre yöntemler oluşturulmuştur. Bu yöntemlerin nasıl kullanılacağı ile ilgili bir örnek aşağıda verilmiştir.
# Yöntemler
Aşağıda DB:: kütüphanesinin nitelik türleri listelenmiştir.
3.0.0 | string | autoIncrement(string $col = NULL, bool $type = true) |
3.0.0 | string | primaryKey(string $col = NULL, bool $type = true) |
3.0.0 | string | foreignKey(string $col = NULL, bool $type = true) |
5.7.4 | string | references(string $table, string $column) |
3.0.0 | string | unique(string $col = NULL, bool $type = true) |
3.0.0 | string | null(void) |
3.0.0 | string | notNull(void) |
4.0.1 | string | exists(string $col = NULL, bool $type = true) |
4.0.1 | string | notExists(string $col = NULL, bool $type = true) |
3.0.3 | string | constraint(string $constraint = NULL, bool $type = false) |
3.0.3 | string | defaultValue(string $default = NULL, bool $type = false) |
2.0.0 | string | like(string $value, string $type = 'starting') |
4.2.6 | string | between(string $value1, string $value2) |
4.2.6 | string | in(string ...$value) |
4.2.6 | string | intable(string ...$value) |
4.2.6 | string | inQuery(string ...$value) |
4.2.6 | string | notIn(string ...$value) |
# AutoIncrement (ZN >= 3.0.0)
SQL AUTO_INCREMENT deyiminin karşılığıdır. Ancak yöntemin çıktısı yukarıdaki tabloya göre seçili veritabanı sürüsünün türüne göre değişiklik göstermektedir.
Parametreler
void | |||
return | string |
Kullanımı
echo DB::autoIncrement(); # AUTOINCREMENT
DBForge::createTable('orders',
[
'id' => [DB::int(11), DB::primaryKey(), DB::autoIncrement()]
]);
# PrimaryKey (ZN >= 3.0.0)
SQL PRIMARY KEY deyiminin karşılığıdır.
Parametreler
3.0.0 | string | $column = NULL | Kolon belirtilmesi durumunda onuda çıktılar. |
return | string |
Kullanımı
echo DB::primaryKey(); # PRIMARY KEY
echo DB::primaryKey('id'); # PRIMARY KEY (id)
DBForge::createTable('orders',
[
'id' => [DB::int(11), DB::primaryKey(), DB::autoIncrement()]
]);
# ForeignKey (ZN >= 3.0.0)
SQL FOREIGN KEY deyiminin karşılığıdır.
Parametreler
3.0.0 | string | $column = NULL | Yabancı anahtar olarak belirtilen kolon bilgisi. |
5.7.4 | string |
$references = NULL |
Bu parametrenin belirtilmesi durumunda 1. parametre referans alınacak tablonun adını 2. parametre ise tablonun kolon bilgisini temsil eder. |
return | string |
Kullanımı
echo DB::foreignKey(); # FOREIGN KEY
echo DB::foreignKey('personId'); # FOREIGN KEY (personId)
Bu güncelleme ile DB::foreignKey() yönteminin davranış biçiminde değişiklik yapılmıştır. 2. parametrenin kullanılması durumunda REFERENCES column(id) kullanımı gibi de davranır.
echo DB::foreignKey('person', 'id'); # FOREIGN KEY (personId) REFERENCES person(id)
DBForge::createTable('orders',
[
'id' => [DB::int(11), DB::primaryKey(), DB::autoIncrement()],
'personId' => [DB::int(11), DB::foreignKey('person', 'id')]
]);
(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
personId INT(11),
FOREIGN KEY(personId) REFERENCES person(id)
)
# References (ZN >= 5.7.4)
SQL REFERENCES deyiminin karşılığıdır.
echo DB::references('person', 'id'); # REFERENCES person(id)
DBForge::createTable('orders',
[
'id' => [DB::int(11), DB::primaryKey(), DB::autoIncrement()],
'personId' => [DB::int(11), DB::foreignKey(), DB::references('person', 'id')]
]);
# Unique (ZN >= 3.0.0)
SQL UNIQUE deyiminin karşılığıdır.
echo DB::unique(); # UNIQUE
# Null (ZN >= 3.0.0)
SQL NULL deyiminin karşılığıdır.
echo DB::null(); # NULL
DBForge::createTable('orders',
[
'id' => [DB::int(11), DB::primaryKey(), DB::autoIncrement()],
'surname' => [DB::varchar(200), DB::null()]
]);
# NotNull (ZN >= 3.0.0)
SQL NOT NULL deyiminin karşılığıdır.
echo DB::notNull(); # NOT NULL
DBForge::createTable('orders',
[
'id' => [DB::int(11), DB::primaryKey(), DB::autoIncrement()],
'email' => [DB::varchar(100), DB::notNull()],
'surname' => [DB::varchar(200), DB::null()]
]);
# Exists (ZN >= 4.0.1-EIP)
SQL EXIST deyiminin karşılığıdır.
echo DB::exists('...DATA...'); # EXISTS(...DATA...)
# NotExists (ZN >= 4.0.1-EIP)
MYSQL NOT EXISTS deyiminin karşılığıdır.
echo DB::notExists(); # NOT EXISTS
# Constraint (ZN >= 3.0.3)
SQL CONSTRAINT deyiminin karşılığıdır.
echo DB::constraint(); # CONSTRAINT
DBForge::createTable('orders',
[
'id' => [DB::int(11), DB::primaryKey(), DB::autoIncrement()],
'personId' => [DB::int(11), DB::constraint(), DB::foreignKey(), DB::references('person', 'id')]
]);
# DefaultValue (ZN >= 3.0.3)
MYSQL DEFAULT deyiminin karşılığıdır.
echo DB::defaultValue(10); # DEFAULT(10)
DBForge::createTable('orders',
[
'id' => [DB::int(11), DB::primaryKey(), DB::autoIncrement()],
'email' => [DB::varchar(100), DB::notNull()],
'surname' => [DB::varchar(200), DB::null(), DB::defaultValue('Your surname')]
]);
# Like (ZN >= 2.0.0)
SQL LIKE deyiminin karşılığıdır. Ancak yöntemin çıktısı yukarıdaki tabloya göre seçili veritabanı sürüsünün türüne göre değişiklik göstermektedir.
string | $data | Aranacak dizge. |
string | $type = 'starting' | Aramanın türü. |
starting | ... ile başlayan | |
inside | ... içinde geçen ... | |
ending | ile biten .... | |
return | string |
echo DB::like('search', 'inside'); # %search%
echo DB::like('search', 'starting'); # search%
echo DB::like('search', 'ending'); # %search
$persons = DB::where('name like', DB::like('ozan', 'starting'))->persons();
Ya da
$persons = DB::whereStartLike('name', 'ozan')->persons(); # options[Like|StartLike|EndLike]
# Between (ZN >= 4.2.6)
SQL BETWEEN value AND value deyiminin karşılığıdır.
string | $value1 | Karşılaştırılacak 1. değer. |
string | $value2 | Karşılaştırılacak 2. değer. |
return | string |
$persons = DB::where('id between', DB::between(1, 2))->persons();
Ya da
$persons = DB::whereBetween('id', 20, 50)->persons();
# In (ZN >= 4.2.6)
SQL IN('val1', 'val2') deyiminin karşılığıdır.
string | ...$values | Sıralı parametrik değerler. |
return | string |
$persons = DB::where('city in', DB::in('London', 'Istanbul'))->persons();
echo $persons->stringQuery();
Ya da
$persons = DB::whereIn('city', ['London', 'Istanbul'])->persons();
# intable (ZN >= 4.2.6)
SQL IN(SELECT * FROM TABLE) deyiminin karşılığıdır.
Parametreler
string | ...$values | Sıralı parametrik değerler. |
return | string |
Kullanımı
$persons = DB::where('id in', DB::inTable('orders'))->persons();
echo $persons->stringQuery();
Ya da
$persons = DB::whereInTable('id', 'orders')->persons();
# InQuery (ZN >= 4.2.6)
SQL IN(SELECT * FROM TABLE) deyiminin karşılığıdır.
string | ...$values | Sıralı parametrik değerler. |
return | string |
$persons = DB::where('id in', DB::inQuery(DB::string()->orders()))->persons();
echo $persons->stringQuery();
Ya da
$persons = DB::whereInQuery('id', DB::string()->orders())->persons();
# NotIn (ZN >= 4.2.6)
SQL NOT IN(...) deyiminin karşılığıdır.
string | ...$values | Sıralı parametrik değerler. |
return | string |
$persons = DB::where('id not in', DB::notIn(1, 3, 5))->persons();
echo $persons->stringQuery();
Ya da
$persons = DB::whereNotIn('id', [1, 3, 5])->persons();