Nitelik Türleri


    × Bunları biliyor muydunuz?
"ZN Framework 2011 senesinden beri geliştirilmeye devam etmektedir."


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.

DB::autoIncrement(string $col = NULL, bool $type = true) : string
DB::primaryKey(string $col = NULL, bool $type = true) : string
DB::foreignKey(string $col = NULL, bool $type = true) : string
DB::references(string $table, string $column) : string
DB::unique(string $col = NULL, bool $type = true) : string
DB::null() : string
DB::notNull() : string
DB::exists(string $col = NULL, bool $type = true) : string
DB::notExists(string $col = NULL, bool $type = true) : string
DB::constraint(string $constraint = NULL, bool $type = false) : string
DB::defaultValue(string $default = NULL, bool $type = false) : string
DB::like(string $value, string $type = 'starting') : string
DB::between(string $value1, string $value2) : string
DB::in(string ...$value) : string
DB::intable(string ...$value) : string
DB::inQuery(string ...$value) : string
DB::notIn(string ...$value) : string

 

 

# 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
Tablo Oluştururken
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)
Tablo Oluştururken
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)
Tablo Oluştururken
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)
Tablo Oluştururken
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
Tablo Oluştururken
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
Tablo Oluştururken
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
Tablo Oluştururken
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)
Tablo Oluştururken
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();
SELECT * FROM exampleTable WHERE exampleColumn like 'searchData%' 

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();
SELECT * FROM persons WHERE id between 20 AND 50

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();
SELECT * FROM persons WHERE city in ('London','Istanbul'

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();
SELECT * FROM persons WHERE id in (SELECT * FROM orders) 

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();
SELECT * FROM persons WHERE id in (SELECT * FROM orders) 

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();
SELECT * FROM persons WHERE id not in (1, 3, 5) 

Ya da

$persons = DB::whereNotIn('id', [1, 3, 5])->persons()