2016-06-12 4 views
0

는 기본적으로, 나는 N 있습니다. Plans and Susciation 1 차 키는이 N : M 관계의 1 차 키이며이 N : M 관계에는 "price"속성도 있습니다. 나는이 테이블에 가격 속성을 업데이트해야하기 때문에 , 내가 추진에 의해 생성 된 클래스로에 액세스하는 방법을 알아낼 수 없습니다. 내가 볼 수 있듯이, 그 계획 및 구독 클래스가 제가 무엇을해야 할 수있는 방법을하지 않은 것 같다. Propel에서 생성 한 CrossRef 테이블의 비 기본 키 값에 어떻게 액세스합니까? ("계획"과 "구독"테이블 사이) M 관계 :

는이 나무의 관계 (계획, 구독 및 그들의 CrossRef)

<table name="subscriptions" phpName="Subscription"> 
    <column name="id_subscription" type="integer" required="true" primaryKey="true" autoIncrement="true"/> 
    <column name="name" type="varchar" required="true"/> 
    <column name="description" type="longvarchar" required="true"/> 
</table> 

<table name="planes_subscriptions" isCrossRef="true"> 
    <column name="id_plan" type="integer" primaryKey="true"/> 
    <column name="id_subscription" type="integer" primaryKey="true"/> 
    <column name="price" type="real"/> 

    <foreign-key foreignTable="planes" onDelete="CASCADE" onUpdate="CASCADE"> 
     <reference local="id_plan" foreign="id_plan"/> 
    </foreign-key> 
    <foreign-key foreignTable="subscriptions" onDelete="CASCADE" onUpdate="CASCADE"> 
     <reference local="id_subscription" foreign="id_subscription"/> 
    </foreign-key> 
</table> 

<table name="planes" phpName="Plan"> 
    <column name="id_plan" type="integer" required="true" primaryKey="true" autoIncrement="true"/> 
    <column name="name" type="varchar" required="true"/> 
    <column name="description" type="longvarchar" required="false"/> 
    <column name="price" type="real" required="true"/> 
</table> 

내가 그 생각하고 있었는데 추진 클래스를 생성에 내가 몇 가지 물건을 코딩해야 할 수도를 선언 내의 schema.xml의 일부입니다 그것을하기 위해,하지만 기본 키를 사용하여이 테이블의 행에 액세스하는 방법을 알아낼 수 없습니다. 밤 (실제로는 새벽 아침)

Blog: Many-to-many Relationships: Check!

Basic Relationships

답변

0

그것은 단지 문제의이었다

나는 추진의 설명서에 연구했지만 그들은 단지이 특정 사건을 취급하지 않습니다 좋은 수면을 취하고 이것을 다시 연구하십시오.

은 추진이 방법을 생성하여 개체를 업데이트하는 방법이있다. 연관 배열에서, 열 값은 대문자 (P 쌀)로 시작주의 사항 : 난 그냥 그 예비 키 중요

// Create planSuscription query 
$planSubscription = PlanesSubscriptionsQuery::create()-> 
// filter the query by plan and subscription ids 
filterByIdPlan($idPlan)->filterByIdSubscription($idSuscripcion)-> 
// Magic comes here: an associative array with the value to update 
update(array('Price' => $newSubscriptionPrice)); 
// Just checking amount of affected rows 
echo $planSuscripcion; 

에 의해 나의하여 ObjectQuery (PlansSubscriptionsQuery)를 필터링해야했다. 지금까지 볼 수 있듯이 이것은 내부적으로 Propel이 이와 같은 방식으로 작동하기 때문입니다. 열 이름이 두 개 이상의 단어로 구성되는 경우 각 열 첫 글자 단어가 capilatized가됩니다. I D PM Y S uper wesome C olumn N AME

I found a question here that made me realize of this

제의 schema.xml 파일 무사했지만 I 열 액세스를 시도했다 정확하지 않은 (그래서 가격, id_plan, id_subscription 등)의 schema.xml 파일에서 설정 한 밑줄 이름.

나는이 사람을 도움이되기를 바랍니다.