LARAVEL (Sorgu Oluşturucu)
veritabanı sorgulama oluşturucu oluşturma veri tabanı sorgulamalarmı çalışan uygun bir akıcı bir arayüz sağlar. Uygulama en veritabanı işlemleri gerçekleştirmek için kullanılan ve desteklenen tüm veritabanı sistemlerinde çalışmaktadır edilebilir.
Not: laravel sorgu oluşturucu, SQL enjeksiyon saldırılarına karşı korumak için uygulama boyunca bağlayıcı PDO parametresini kullanır. Dizeleri bağlamaları olarak geçirildiği temizlemeye gerek yoktur.
seçer
Bir tablodan tüm satırları alınıyor
$users = DB::table('users')->get();
foreach ($users as $user)
{
var_dump($user->name);
}
Bir Tablo Gönderen Sonuçları chunking
DB::table('users')->chunk(100, function($users)
{
foreach ($users as $user)
{
//
}
});
Sen dönmeden tarafından işleniyor gelen başka parçalar durabilir false
dan Closure
:
DB::table('users')->chunk(100, function($users)
{
//
return false;
});
Bir tablo tek bir sıra alma
$user = DB::table('users')->where('name', 'John')->first();
var_dump($user->name);
Sırayla tek bir sütun alınıyor
$name = DB::table('users')->where('name', 'John')->pluck('name');
Sütun değerler listesi alınıyor
$roles = DB::table('roles')->lists('title');
Bu yöntem rol başlıkların bir dizi döndürür. Ayrıca dönen dizi için özel bir anahtar sütunu belirtebilirsiniz:
$roles = DB::table('roles')->lists('title', 'name');
Bir seç Madde belirtme
$users = DB::table('users')->select('name', 'email')->get();
$users = DB::table('users')->distinct()->get();
$users = DB::table('users')->select('name as user_name')->get();
Mevcut Bir sorgusu için bir seçme Madde ekleme
$query = DB::table('users')->select('name');
$users = $query->addSelect('age')->get();
Nerede Operatörleri Kullanma
$users = DB::table('users')->where('votes', '>', 100)->get();
Ya Tablolar
$users = DB::table('users')
->where('votes', '>', 100)
->orWhere('name', 'John')
->get();
Nerede Arasında Kullanımı
$users = DB::table('users')
->whereBetween('votes', array(1, 100))->get();
Nerede Değil Arasında Kullanma
$users = DB::table('users')
->whereNotBetween('votes', array(1, 100))->get();
Nerede ise bir Array ile Kullanılması
$users = DB::table('users')
->whereIn('id', array(1, 2, 3))->get();
$users = DB::table('users')
->whereNotIn('id', array(1, 2, 3))->get();
Boş Unset Değerler ile Kayıtları Bul Nerede kullanma
$users = DB::table('users')
->whereNull('updated_at')->get();
Satın ederek, Grup olarak, Ve Having
$users = DB::table('users')
->orderBy('name', 'desc')
->groupBy('count')
->having('count', '>', 100)
->get();
Ofset & Limiti
$users = DB::table('users')->skip(10)->take(5)->get();
Katıldı
sorgu oluşturucu da ifadeleri katılmak yazmak için kullanılabilir. Aşağıdaki örneklere bir göz atın:
Temel Bildirimi Üyelik
DB::table('users')
->join('contacts', 'users.id', '=', 'contacts.user_id')
->join('orders', 'users.id', '=', 'orders.user_id')
->select('users.id', 'contacts.phone', 'orders.price')
->get();
Sol Bildirimi Üyelik
DB::table('users')
->leftJoin('posts', 'users.id', '=', 'posts.user_id')
->get();
Ayrıca, daha gelişmiş maddeleri katılabilir belirtebilirsiniz:
DB::table('users')
->join('contacts', function($join)
{
$join->on('users.id', '=', 'contacts.user_id')->orOn(...);
})
->get();
Eğer katılır senin üzerinde bir "nerede" tarzı maddesini kullanmak istiyorsanız, bunu yapmak için where
ve orWhere
bir katılmak üzerinde yöntemleri. Bunun yerine iki sütun karşılaştırmak yerine, bu yöntemler bir değere karşı sütunu karşılaştırır:
DB::table('users')
->join('contacts', function($join)
{
$join->on('users.id', '=', 'contacts.user_id')
->where('contacts.user_id', '>', 5);
})
->get();
Gelişmiş Nerede
Parametre Gruplama
Bazen daha gelişmiş oluşturmanız gerekebilir nerede böyle "nerede var" veya iç içe parametre gruplamalar olarak hükümler. Laravel sorgu oluşturucu de bu işleyebilir:
DB::table('users')
->where('name', '=', 'John')
->orWhere(function($query)
{
$query->where('votes', '>', 100)
->where('title', '<>', 'Admin');
})
->get();
Sorgu yukarıdaki aşağıdaki SQL üretecektir:
select * from users where name = 'John' or (votes > 100 and title <> 'Admin')
İfadeleri var
DB::table('users')
->whereExists(function($query)
{
$query->select(DB::raw(1))
->from('orders')
->whereRaw('orders.user_id = users.id');
})
->get();
Sorgu yukarıdaki aşağıdaki SQL üretecektir:
select * from users
where exists (
select 1 from orders where orders.user_id = users.id
)
Agregalar
Sorgu etkinliğini arttırıcı madde, toplam olarak yöntem, bir dizi içerir count
, max
, min
, avg
, ve sum
.
Agrega Yöntemlerle
$users = DB::table('users')->count();
$price = DB::table('orders')->max('price');
$price = DB::table('orders')->min('price');
$price = DB::table('orders')->avg('price');
$total = DB::table('users')->sum('votes');
Ham İfadeler
Bazen bir sorguda ham ifadesini kullanması gerekebilir. Bu ifadeler bu nedenle herhangi bir SQL enjeksiyon noktaları oluşturmak için dikkatli olmak, dizeleri olarak sorguya enjekte edilecek! Ham bir ifade oluşturmak için kullanabileceğiniz DB::raw
yöntemi:
Bir Ham İfade Kullanarak
$users = DB::table('users')
->select(DB::raw('count(*) as user_count, status'))
->where('status', '<>', 1)
->groupBy('status')
->get();
ekler
Bir Tablo içine Kayıtları takma
DB::table('users')->insert(
array('email' => '[email protected]', 'votes' => 0)
);
Otomatik artan kimliği olan bir tabloya Kayıtları takma
Tablo otomatik artan kimliği varsa, kullanmak insertGetId
bir kayıt eklemek ve kimliği almak için:
$id = DB::table('users')->insertGetId(
array('email' => '[email protected]', 'votes' => 0)
);
Not: PostgreSQL kullanırken insertGetId yöntemi otomatik artan sütun "id" adlı bekliyor.
Bir Tablo Birden Fazla Kayıtları takma
DB::table('users')->insert(array(
array('email' => '[email protected]', 'votes' => 0),
array('email' => '[email protected]', 'votes' => 0),
));
Güncellemeler
Bir Tabloda Kayıtları Güncellenmesi
DB::table('users')
->where('id', 1)
->update(array('votes' => 1));
Arttırılması veya kolonun bir değer azaltma
DB::table('users')->increment('votes');
DB::table('users')->increment('votes', 5);
DB::table('users')->decrement('votes');
DB::table('users')->decrement('votes', 5);
Ayrıca güncellemek için ek sütunlar belirtebilirsiniz:
DB::table('users')->increment('votes', 1, array('name' => 'John'));
Silinme
Bir Tabloda Kayıtları Silme
DB::table('users')->where('votes', '<', 100)->delete();
Bir tablodan tüm kayıtları silme
DB::table('users')->delete();
Bir tablo kesiliyor
DB::table('users')->truncate();
Sendikalar
sorgu oluşturucu da hızlı bir yol için "birlik" iki sorguları birbirine sağlamaktadır:
$first = DB::table('users')->whereNull('first_name');
$users = DB::table('users')->whereNull('last_name')->union($first)->get();
unionAll
Yöntem de mevcuttur, ve aynı yöntem imzaya sahip union
.
kötümser Kilitleme
Sorgu oluşturucu SELECT tablolarda "kötümser kilitleme" do yardımcı olacak birkaç işlevleri içerir.
"Paylaşılan kilit" ile SELECT deyimini çalıştırmak için, kullanabilir sharedLock
bir sorguyu yöntemi:
DB::table('users')->where('votes', '>', 100)->sharedLock()->get();
Bir SELECT ifadesi üzerine "güncelleme için kilitlemek" için kullanabilir lockForUpdate
bir sorguyu yöntemi:
DB::table('users')->where('votes', '>', 100)->lockForUpdate()->get();
Kardeşim Eline Sağlık Ama Yani İnsan Bir Düzgün Çeviri Yapar Translate Edip Siteye Gömmüşsün Yazıyı Umarım Düzeltilir.