Veritabanı Nitelik Türleri


    × Bunları biliyor muydunuz?
"Projects/ dizini altında oluşturulan proje dizinleri çalışan host'un ismi ile isimlendirilirse Settings/Projects.php yapılandırma dosyasına tanımlamaya gerek kalmadan otomatik olarak çağrılması sağlanı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
Tablo Oluştururken
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)
Tablo Oluştururken
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)
5.7.4 Güncellemesi

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)
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 (ZN >= 5.7.4)


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 (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
Tablo Oluştururken
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
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 (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
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 (ZN >= 3.0.3)


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 (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.

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 (ZN >= 4.2.6)


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 (ZN >= 4.2.6)


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

Ya da 

$persons = DB::whereInTable('id', 'orders')->persons()

 

 

# InQuery (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::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 (ZN >= 4.2.6)


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()