Doktrini ORM: Another gibi tablo oluştur

3 Cevap php

Başka gibi bir tablo oluşturmak için Doktrini kullanarak herhangi bir şekilde, var mı? Ben MySQL bunu bir fonksiyon olduğunu biliyorum:

CREATE TABLE user2 LIKE user;

ve tablolar kullanıcı ve birey2 aynı olacaktır. Bu Doktrini yapılabilir?

3 Cevap

Ben ne arıyorsun senin modeli oluşturulduğunda on the schema level o user2 user devralır (senin örnek kullanalım) tanımlamak olduğunu düşünün. Sen is described in the documentation öğretinin concrete devralmayı kullanarak bunu yapabilirsiniz.

Yani, içinde schema.yml:

User:
  columns:
    name: string

User2:
  inheritance:
    extends: User
    type: concrete
  columns:
    something: int

Bu şekilde user2 ayrı bir tablo ve daha önce {[(1)}] 'de tanımlandığı gibi aynı sütun ("name") içerir. Ben iki identical tabloları istiyorum neden emin değilim, ama bu yukarıdaki yöntemi kullanarak kesinlikle mümkündür.

Ben düşünüyorum. (

Burada gibi şablondan tabloları http://www.doctrine-project.org/documentation/cookbook/1_1/en/plug-and-play-schema-information-with-templates oluşturmak veya Doctrine_RawSql kullanabilirsiniz.

Doktrin Bunun için basit bir yöntem sağlar: Doctrine_Record :: copy ().

  $copy = $user->copy();

Notice that copying the record with copy() returns a new record (state TDIRTY) with the values of the old record, and it copies the relations of that record. If you do not want to copy the relations too, you need to use copy(false).

Get a copy of user without the relations

$copy = $user->copy(false);