Yii quadro molti a molti rapporti
-
18-09-2019 - |
Domanda
Qual è il metodo per salvare e aggiornare relazione molti a molti nel quadro Yii?
Soluzione
C'è una migliore attuazione come un comportamento.
Altri suggerimenti
A meno che non si crea un modello per la tabella tra le due tabelle principali, l'unica opzione è quella di utilizzare DAO (Database Object Access) e specificare SQLs con esso.
Date un'occhiata a come blog demo realizza questo compito.
uso MANY_MANY
tipo di relazione di impostare molti a molti di collegamento tra i modelli (Una tabella associativa è necessaria per rompere una relazione molti-a-molti in relazioni uno-a-molti)
E ora è possibile utilizzare tutte le funzioni relazionali di record attivi
Yii Framework - The Definitive Guide di Yii: Lavorare con database relazionale attivo Record
L'estensione seguente fa ciò che vuoi ... Yii Framework - Estensione: cadvancedbehavior
Una cosa importante da notare: Ad ogni aggiornamento, l'estensione cancella tutti i record precedenti e crea di nuovi. Quindi io non lo uso quando la tabella intermediatry contiene dati aggiuntivi diversi dalle chiavi esterne.
è possibile impostare che fino a mysql level..by intenzione di vista relazionale sotto ogni tabella in phpMyAdmin e fornire il necessario uso condition..and relazionale MANY_MANY nella classe del modello all'interno relazioni ..
La domanda è troppo comune.
Di solito i componenti di dati con molti rapporti MOLTI appaiono in sequenza e in modo indipendente. Quindi non vi resta che fare una sola azione di inserimento dopo l'altro.
Se il vostro rapporto ha bisogno di aggiornamento dipendente si dovrebbe utente SQL trigger sul livello di database. Questo candidato dovrà garantire l'integrità dei dati e invia un abbastanza buona separazione logica di business dell'applicazione.
CREATE TRIGGER some_trigger
AFTER UPDATE ON some_table
...
END IF;
Un modo simile è quello incapsula dati relazionali in un modello logico a livello PHP (e ad esempio manipolare con 2-3 modelli AR là) ed emulare SQL trigger logica in esso.