Nitelik Türleri
"Libraries/ dizini içine taşınan veya bu dizinde oluşturulan kütüphaneler hiç bir tanımlama gerektirmeden kullanılabilir. "
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.
# AutoIncrement
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
return string |
Kullanımı
echo DB::autoIncrement(); # AUTOINCREMENT
DBForge::createTable('orders',
[
'id' => [DB::int(11), DB::primaryKey(), DB::autoIncrement()]
]);
# PrimaryKey
SQL PRIMARY KEY deyiminin karşılığıdır.
Parametreler
string $column = NULL | Kolon belirtilmesi durumunda onu da çı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
SQL FOREIGN KEY deyiminin karşılığıdır.
Parametreler
string $column = NULL | Yabancı anahtar olarak belirtilen kolon bilgisi. |
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)
[string $references]
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')] ]);
CREATE TABLE orders
(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
personId INT(11),
FOREIGN KEY(personId) REFERENCES person(id)
)
# References
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
SQL UNIQUE deyiminin karşılığıdır.
echo DB::unique(); # UNIQUE
# Null
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
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
SQL EXIST deyiminin karşılığıdır.
echo DB::exists('...DATA...'); # EXISTS(...DATA...)
# NotExists
MYSQL NOT EXISTS deyiminin karşılığıdır.
echo DB::notExists(); # NOT EXISTS
# Constraint
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
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
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.
Parametreler
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 |
Kullanımı
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
SQL BETWEEN value AND value deyiminin karşılığıdır.
Parametreler
string $value1 | Karşılaştırılacak 1. değer. |
string $value2 | Karşılaştırılacak 2. değer. |
return string |
Kullanımı
$persons = DB::where('id between', DB::between(1, 2))->persons();
Ya da
$persons = DB::whereBetween('id', 20, 50)->persons();
# In
SQL IN('val1', 'val2') deyiminin karşılığıdır.
Parametreler
string ...$values | Sıralı parametrik değerler. |
return string |
Kullanımı
$persons = DB::where('city in', DB::in('London', 'Istanbul'))->persons();
echo $persons->stringQuery();
Ya da
$persons = DB::whereIn('city', ['London', 'Istanbul'])->persons();
# intable
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
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::inQuery(DB::string()->orders()))->persons();
echo $persons->stringQuery();
Ya da
$persons = DB::whereInQuery('id', DB::string()->orders())->persons();
# NotIn
SQL NOT IN(...) deyiminin karşılığıdır.
Parametreler
string ...$values | Sıralı parametrik değerler. |
return string |
Kullanımı
$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();