LARAVEL (Sorgu Oluşturucu)

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 falsedan 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 whereve orWherebir 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 countmaxminavg, 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::rawyö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' => 'john@example.com', 'votes' => 0)
);

Otomatik artan kimliği olan bir tabloya Kayıtları takma

Tablo otomatik artan kimliği varsa, kullanmak insertGetIdbir kayıt eklemek ve kimliği almak için:

$id = DB::table('users')->insertGetId(
    array('email' => 'john@example.com', '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' => 'taylor@example.com', 'votes' => 0),
    array('email' => 'dayle@example.com', '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();

unionAllYö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 sharedLockbir sorguyu yöntemi:

DB::table('users')->where('votes', '>', 100)->sharedLock()->get();

Bir SELECT ifadesi üzerine "güncelleme için kilitlemek" için kullanabilir lockForUpdatebir sorguyu yöntemi:

DB::table('users')->where('votes', '>', 100)->lockForUpdate()->get();

Henüz Yorum Yapılmamış, İlk Yorumu Siz Yapın

Yorum Yollayın