Domanda

Quindi, ecco lo scenario:

Ho due tavoli, Issue & Project.

Un progetto può avere molti di emissione e di un problema può esattamente un progetto.

Dal problema è molti a uno, devi definirlo?

Perchè so in Project modello che ho:

public function relations()
{
    return array(
    'issues' => array(self::HAS_MANY, 'Issue', 'project_id'),
    'users' => array(self::MANY_MANY, 'User', 'tbl_project_user_assignment(project_id, user_id)'),
    );
}

Per il rilascio del modello non ho nulla ma stranieri tasti:

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'requester' => array(self::BELONGS_TO, 'User', 'requester_id'),
        'owner' => array(self::BELONGS_TO, 'User', 'owner_id'),
        'project' => array(self::BELONGS_TO, 'Project', 'project_id'),
    );
}

Sto indovinando qualsiasi cosa per un rapporto non ha bisogno di essere definire?

Grazie in anticipo.

A proposito, sto facendo agile Yii libro e ho finito per pormi questa domanda. C'è una ha-un'opzione in classe AR ( http://www.yiiframework.com/ doc / guide / database.arr ).

Ma questo caso facoltativa per qualche motivo?

È stato utile?

Soluzione

Mi aiuta a pensare alla differenza tra belongs_to e has_one come "in cui è memorizzata la chiave esterna"? Se il modello di progetto memorizzato "ISSUE_ID" quindi potenzialmente questione potrebbe avere molti progetti. Si utilizza il rapporto has_one affermare che, anche se questione potrebbe avere molti progetti, ha una sola.

Tuttavia, il caso più comune è se si archiviano il project_id nel modello di Emissione (e presumo tu sei). Poi si deve utilizzare la relazione belongs_to. Sembra che tu hai definito i rapporti in modo corretto sopra.

Qualcuno ha postato una domanda simile relativa ai rapporti Yii qui che ho aiutato risposta: yii - usando relazione has_one per ottenere dati dalla tabella correlata alla visualizzazione in lista pagina

Per quanto riguarda la sua preoccupazione per "bisogno" per definire le relazioni, non si "bisogno" per definire qualsiasi. Si potrebbe scrivere le proprie query SQL per fare la stessa cosa. Le relazioni ActiveRecord sono solo una cosa convenienza per fare query per record correlati più semplice. Se non siete mai andare per cercare di progetto è un problema, allora non "bisogno" di definire il "progetto" rapporto belongs_to.

Senza realmente vedere la struttura del database sembra a me come hai tutto impostato correttamente. Si può ora facilmente fare sia $ problema-> progetto e $ Progetto-> questioni query relazionali "pigri", sfruttando appieno la potenza del relazionale attivo Record. Saluti e buona fortuna con progetto!

Altri suggerimenti

Nel vostro modello Problema hai già il rapporto specificato come belongs_to il modello del progetto.

Inoltre ho appena ricevuto il nuovo Yu-book. Mi ha aiutato un sacco!

codifica

Happy:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top