Drupal'da veritabanı işlemlerinde işinizi kolaylaştıracak bir fonksiyondan bahsetmek istiyorum db_merge. Bu fonksiyonun şu ana kadar en çok işime yaranyan tarafından örnek vereceğim veri tabanında kayıt var mı kontrol et varsa güncelle yoksa yenisini ekle işimiz bu. Veri tabanında kayıt var mı kontrol et varsa güncelle yoksa yenisini ekle db_merge bu işlemi sizin için kolaylaştırır ve fazla kod yazmazsınız.

Örneğin, url_alias tablosunda source node/36language tr ve alias makale/db_merge_ornek kayıtın olmasını istiyorum. db_merge bizi uzun bir kod yazımından kurtarıp tek sorguda halletmemizi sağlıyor. Bizi select, insert, update gibi işlemlerden kurtarıyor.

db_merge kullanımı:

$sorgu = db_merge('url_alias')
  ->key(array(
    'source' => 'node/36',
    'language' => 'tr',
  ))
  ->fields(array(
    'alias' => 'makale/db_merge_ornek',
  ))
  ->execute();

Yukarıdaki kod aşağıdakinin uzatılmış halidir:

$sorgu_sonucu = db_select('url_alias')
  ->condition('source', 'node/36')
  ->condition('language', 'tr')
  ->countQuery();

if ($sorgu_sonucu > 0) {
  db_update('url_alias')
    ->fields(array(
      'alias' => 'makale/db_merge_ornek',
    ))
    ->condition('source', 'node/36')
    ->condition('language', 'tr')
    ->execute();
} else {
  db_insert('url_alias')
    ->fields(array(
      'source' => 'node/36',
      'language' => 'tr',
      'alias' => 'makale/db_merge_ornek',
    ))
    ->execute();
}

Kaynak için : db_merge kullanımı , db_merge()