2

テーブルプレフィックス「main_」を使用して、多数の共通モデルを持つ複数のWebサイトを管理するためのcakephpセットアップです。そして、Fbuserがテーブル「main_fb_users」を使用している一般的なモデルがあります

そして今、Web サイトがあり、そのテーブル プレフィックスは 'myweb_' で、Fbuser と左結合する必要があるモデル Mymodel があります。

$this->Mymodel->find('all', array(
'joins' => array(
'table' => 'main_fb_users',
'alias' => 'Fbuser',
'type' => 'LEFT',
'conditions' => array('Mymodel.field01 = Fbuser.field02')
));

ここに私が持っているエラーメッセージがあります

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'dbserver.myweb_main_fb_users' doesn't exist

明らかに、これはテーブル プレフィックスの違いによるもので、database.php に設定されているデフォルトのテーブル プレフィックスを変更することはできません。

結合クエリ内のテーブルプレフィックスをオーバーライドするにはどうすればよいですか?

4

3 に答える 3

3

テーブル名の代わりにモデル オブジェクトを文字列として渡します。

$this->Mymodel->find('all', array(
'joins' => array(
'table' => $this->Mymodel->FbUser,
'alias' => 'Fbuser',
'type' => 'LEFT',
'conditions' => array('Mymodel.field01 = Fbuser.field02')
));

私にはうまくいくようです。

于 2015-10-07T09:52:35.113 に答える
0

コントローラーでその場でテーブルプレフィックスを調整できます。

$this->loadModel('MainFbUser');
$this->MainFbUser->tablePrefix = '';

ドキュメントでは:

http://book.cakephp.org/2.0/en/models/model-attributes.html#tableprefix

于 2013-05-15T10:44:55.867 に答える