Modelleri için birden fazla veritabanı kullanarak CakePHP

3 Cevap php

O bir veritabanı ve başka diğer modeller (aynı bağlantıyı kullanan) olmak belirli modeller için mümkün mü?

Benim sisteminin çoklu yüklemeler arasında paylaşılan istiyorum salt okunur tablolar bir dizi var. Diğer tablolar başına kurulum gerekir. Örnek aşkına, users paylaşılan tablo diyelim, ve posts başına kurulum olduğunu.

Tek bir şemaya biz users tablo var (en it "paylaşımlı" diyelim), ve başka bir şema ("mycake") posts olduğunu.

Ben (iki veritabanları aynı ana vardır ve her ikisi de aynı giriş bilgileriyle erişilebilir olsa) paylaşılan veritabanına işaret yeni bir veritabanı bağlantı oluşturarak diğer veritabanından kullanıcı modeli okuma almak mümkün oldum.

class User extends AppModel {
    var $useDBConfig = 'sharedConnection';
}

O posts masaya katılmak için zamanı geldiğinde sorunudur. Bu tablo adının şema adını prepend değildir, ve bu yüzden posts bulamıyorum.

// what it does
SELECT * FROM users User INNER JOIN posts Post ...

// what I'd like it to do:
SELECT * FROM shared.users User INNER JOIN mycake.posts Post ...

Yani temelde, is there a way to assign a fully qualified table name to a model and force it to use that in all its queries? var $useTable = 'shared.users'; yardımcı olmuyor ayarlanıyor ...

3 Cevap

This site bunu yapmak için bir yol var, ama biraz hacky bulunuyor.

Mevcut bir çözüm var here.

Ben farklı veritabanlarını kullanarak modellere sahip CakePKP'deki bir site inşa ettik ve ben farklı veritabanları üzerinde birleştiği ile sorun yoktu - çerçeve benim için tüm bu dikkat çekmek gibiydi. Açıkça işe almak için modellerde kullanılan veritabanı tabloları devlet gerekebilir rağmen.