0

CakePHP アプリケーションでモデルを作成し、そのモデルを CakePHP アプリケーションにまったく関連付けられていないデータベース テーブルに関連付けることは可能ですか?

たとえば、そのデータベーステーブルは別のアプリケーションに属しており、そのテーブルを使用するモデルを CakePHP で作成したいとします (そのテーブルは CakePHP の規則にまったく準拠していません)。どうすればいいですか?その関連付けがテーブルを変更せずに機能するためには、モデルに何を入れる必要がありますか (そのテーブルで基本的な CRUD 操作を実行できる必要があります)

何かアイデアはありますか?

ありがとうございました

4

3 に答える 3

1

はい、できます。たとえば、idCandidat プライマリ キーを持つ cand テーブルがある場合、モデルを作成し、$useTable および $primaryKey プロパティを使用します。

class Candidat extends AppModel{
var $name = 'Candidats';
var $useTable = 'cand';
var $primaryKey  = 'idCandidat';
//etc.
}

通常のモデルと同じように、コントローラーでモデルを使用し続けます。

于 2012-05-04T23:58:11.737 に答える
0

まったく異なるデータベースまたは別のサーバーにあるテーブルを使用することもできます。これには次のものを使用できます(@chroonossの例は正しいので拡張します):

class Candidat extends AppModel{
var $name = 'Candidats';
var $useTable = 'cand';
var $primaryKey  = 'idCandidat';

var $usedbConfig = 'external';
}

これにより、別のデータソース接続を使用できるようになります。これらは次のように定義されています app/config/database.php。この例を機能させるには、「external」という名前のプロパティが必要です。

public $external = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => '101.180.10.17',
        'login' => 'username',
        'password' => 'yourTopSecretPassword',
        'database' => 'database_name',
        'prefix' => '',
        'encoding' => 'utf8',
    );

もちろん、データソースには好きな名前を付けることができます。

于 2012-05-05T11:22:15.123 に答える
0

検索機能でフィールド (列) を設定できます - http://book.cakephp.org/1.3/en/view/1018/find または、フィールドを関連付けに設定する場合は、次のようにします。

var $belongsTo = array(
  'User' => array(
    'className' => 'User',
    'foreignKey' => 'user_id',
    'fields' => array('name','phone')
   )
); 
于 2012-05-06T06:29:12.243 に答える