Birleştirme Deyimleri
"Şablon sihirbazında (Wizard) (5.5.60) sürümünden beri döngülerin sonunda kullanılan : sembolünün kullanım zorunluluğu kaldırılmıştır."
Bu bölümde SQL işlemlerinde en çok kullanılan yapılar olan tablo birleştirmelerin ZN ile nasıl yapıldığı gösterilmiştir. ZN Framework ile tablo birleştirme işlemlerini son derece basit bir şekilde gerçekleştirebilmeniz mümkün.
# Yöntemler
# InnerJoin (ZN >= 3.0.0)
Tablolar arasında SQL INNER JOIN deyimi ile birleştirme yapmak için kullanılır. 1. Parametre birleştirilecek diğer tablo adını ve kolon bilgisini içermelidir.
String | $joinTableColumn | Birleştirilecek tablo ve kolon bilgisi. |
String | $tableColumn | Tek kullanım için get() yöntemine yazılan tablo ve kolon bilgisi olmalıdır. Çoklu kullanımda farklı tablo ve kolon bilgisi olabilir. |
Return | This |
Birleştirme işlemine konu olmuş tablolar ile hangi işlemlerin yapıldığı aşağıda örneklendirilmiştir.
DB::innerJoin('comments.user_id', 'profiles.user_id')
->innerJoin('profiles.user_id', 'users.id')
->users();
FROM users
INNER JOIN comments ON comments.user_id = profiles.user_id
INNER JOIN profiles ON profiles.user_id = users.id
Inner Join ile update işlemi
DB::where('table1.id', 20)->innerJoin('table2.user_id', 'table1.id')->update('table1',
[
'table1.name' => 'Example Name',
'table2.phone' => '0000000000'
]);
INNER JOIN table2 ON table2.user_id = table1.id
SET table1.name='Example Name',table2.phone='0000000000'
WHERE table1.id = 20
Inner Join ile delete işlemi
DB::where('table1.id', 20)->innerJoin('table2.user_id', 'table1.id')->delete('table1');
INNER JOIN table2 ON table2.user_id = table1.id
WHERE table1.id = 20
# OuterJoin (ZN >= 3.0.0)
Tablolar arasında SQL FULL OUTER JOIN deyimi ile birleştirme yapmak için kullanılır. 1. Parametre birleştirilecek diğer tablo adını ve kolon bilgisini içermelidir.
String | $joinTableColumn | Birleştirilecek tablo ve kolon bilgisi. |
String | $tableColumn | Tek kullanım için get() yöntemine yazılan tablo ve kolon bilgisi olmalıdır. Çoklu kullanımda farklı tablo ve kolon bilgisi olabilir. |
Return | This |
DB::outerJoin('comments.user_id', 'profiles.user_id')
->outerJoin('profiles.user_id', 'users.id')
->users();
SELECT *
FROM users
FULL OUTER JOIN comments ON comments.user_id = profiles.user_id
FULL OUTER JOIN profiles ON profiles.user_id = users.id
# LeftJoin (ZN >= 3.0.0)
Tablolar arasında SQL LEFT JOIN deyimi ile birleştirme yapmak için kullanılır. 1. Parametre birleştirilecek diğer tablo adını ve kolon bilgisini içermelidir.
String | $joinTableColumn | Birleştirilecek tablo ve kolon bilgisi. |
String | $tableColumn | Tek kullanım için get() yöntemine yazılan tablo ve kolon bilgisi olmalıdır. Çoklu kullanımda farklı tablo ve kolon bilgisi olabilir. |
Return | This |
DB::leftJoin('comments.user_id', 'profiles.user_id')
->leftJoin('profiles.user_id', 'users.id')
->users();
SELECT *
FROM users
LEFT JOIN comments ON comments.user_id = profiles.user_id
LEFT JOIN profiles ON profiles.user_id = users.id
# RightJoin (ZN >= 3.0.0)
Tablolar arasında SQL RIGHT JOIN deyimi ile birleştirme yapmak için kullanılır. 1. Parametre birleştirilecek diğer tablo adını ve kolon bilgisini içermelidir.
String | $joinTableColumn | Birleştirilecek tablo ve kolon bilgisi. |
String | $tableColumn | Tek kullanım için get() yöntemine yazılan tablo ve kolon bilgisi olmalıdır. Çoklu kullanımda farklı tablo ve kolon bilgisi olabilir. |
Return | This |
DB::rightJoin('comments.user_id', 'profiles.user_id')
->rightJoin('profiles.user_id', 'users.id')
->users();
SELECT *
FROM users
RIGHT JOIN comments ON comments.user_id = profiles.user_id
RIGHT JOIN profiles ON profiles.user_id = users.id
# Union (ZN >= 4.3.3)
Tablolar arasında SQL UNION deyimi ile birleştirme yapmak için kullanılır.
String | $joinTableColumn | Birleştirilecek tablo ve kolon bilgisi. |
Return | This |
$users = DB::select('id', 'name')->union('example')->select('id', 'phone')->users();
output($users->stringQuery());
output($users->result());
0 => object
(
id => string '2' ( length = 3 )
name => string 'Example' ( length = 9 )
)
1 => object
(
id => string '3' ( length = 3 )
name => string 'Test' ( length = 5 )
)
2 => object
(
id => string '1' ( length = 3 )
name => string '55332587488' ( length = 7 )
)
3 => object
(
id => string '2' ( length = 3 )
name => string '88996544878' ( length = 4 )
)
# UnionAll (ZN >= 4.3.3)
Tablolar arasında SQL UNION ALL deyimi ile birleştirme yapmak için kullanılır.
String | $joinTableColumn | Birleştirilecek tablo ve kolon bilgisi. |
Return | This |
$users = DB::select('id', 'name')->unionAll('example')->select('id', 'phone')->users();
output($users->stringQuery());
output($users->result());
0 => object
(
id => string '2' ( length = 3 )
name => string 'Example' ( length = 9 )
)
1 => object
(
id => string '3' ( length = 3 )
name => string 'Test' ( length = 5 )
)
2 => object
(
id => string '1' ( length = 3 )
name => string '55332587488' ( length = 7 )
)
3 => object
(
id => string '2' ( length = 3 )
name => string '88996544878' ( length = 4 )
)