You are currently viewing Laravel Has ile farklı database bağlanma
laravel has diffrent connection

Laravel Has ile farklı database bağlanma

Merhabalar bugün Laravel Has ile farklı database bağlanma nasıl yapılıyor aktarmaya çalışacağım sizlere. PHP ile çözelebileceğiniz alternatif yollar var ama burada bir kütüphane kullandığımız için izleyeceğimiz yöntem bu şekilde olacaktır.

Başlamadan Önce

Neden bu işlemi yapıyoruz kısaca anlatmak isterim, kimi durumlarda loglarımızı veya farklı büyük tablolarımızı mevcut veritabanın yerine farklı bir veritabanı üzerinde tutmak isteyebilirz ama aynı zaman bunların arasında ilişkili olmasınıda isteyebiliriz.

Bir örnek olması adına;

  • Users
  • Log

Log tablosu veritabani_a
Users tablosu veritabani_b

Users tablosu model yapısı olarak

$connection = 'mysql'

Log tablosu model yapısı

$connection = 'mysql2'

bu yapıda herşey normal durumdadır. Olay aslında has olarak bağladığımızda başlamaktadır.

$logDailies = Log::where('created_at', '>', $this->PreviousMonthStart)
            ->where('updated_at', '<', $this->PreviousMonthEnd)
            ->whereNotNull('class_id')
            ->selectRaw('id, user_id, SUM(TIMESTAMPDIFF(SECOND, created_at, updated_at)) as times')
            ->with([
                'user' => function($query){
                    $query->select('id','name','type_id');
                }
            ])->has('user')
            ->groupBy('user_id')
            ->orderBy('times', 'desc')->get();

Benim buradaki kurgum Log modelinden has methodu ile User modeline bağlanmak ve çıktı almak.

Bu şekilde çalıştırmak istediğiniz zaman hata alırsınız çünkü Log veritabanın da users tablosunu aramaya çalışacaktır.

Laravel Has ile farklı database bağlanma Çözümü

Burada izleyeceğimiz yol şu şekilde olacaktır, has ile bağlandığım ilgili model’a küçük bir kod eklemesi yapacağım ve sorunum çözülmüş olacaktır.

public function __construct(array $attributes = [])
    {
        $this->table = env('DB_DATABASE').'.'.$this->table;
        parent::__construct();
    }

Yukarıdaki işlemden sonra genel olarak sisteminizin kontrolü sağlamanız önemlidir.

Laravel Nedir?

Laravel, MVC yapısında web uygulamaları geliştirme için tasarlanmış ücretsiz, açık kaynak PHP web uygulama iskeletidir. Laravel, GitHub sitesinde barındırılan kaynak kodu ile birlikte, MIT lisansı altında yayınlandı.

2014 ve 2015 yıllarında Sitepoint tarafından yapılan en popüler PHP uygulama iskeletleri anketlerinde Laravel iki sene üst üste en üst sırada yer aldı. Nisan 2015 tarihindeki verilere göre Laravel github’da barındırılan PHP projeleri arasında en çok takip edilen ve en popüler projedir.

Laravel, versiyon 4’ten itibaren bağımlılık yönetimi (dependency management) için composer paket yöneticisini tercih etmiştir. Yine versiyon 4’ten itibaren Doctrine, Monolog gibi paketlerin yanı sıra web iskeletini oluşturan komponentler için Symfony2 paketlerinden yararlanmaktadır.
Kaynak vikipedia.

kurtitasarim

‘’İrade ve yargıları aşan güçlü bir coşku, ihtiras" diye tanımlanır tutku. Yaptığın işi sevmek yerine, sevdiğin işi yap mottosu da benim tutku tanımım. Kod yazmak bir yana, o kodun sistem üzerindeki hareketlerini, farklı cihazlar ile etkileşimini, o noktalarda oluşan sıkıntıları görmek, çözmek ve bunu yaparken diğer kişilere yol göstermek işimin en zevkli yanı. Bu sebeple önce tutku ile yapılan iş, sonra maddiyat..

Bir cevap yazın