Yii Framework Forum: MANY_MANY Tutorial - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

MANY_MANY Tutorial Rate Topic: -----

#1 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 25 August 2009 - 10:08 AM

Hi, könnte jemand eine kleine Einführung in MANY_MANY Beziehungen hinsichtlich beim CREATE geben.

Ich verstehe noch nicht wie man in die Verknüpfungstabelle die Relationen erstellt.
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#2 User is offline   Dave 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 187
  • Joined: 09-October 08

Posted 25 August 2009 - 10:28 AM

Die Relationstabelle entspricht auch einem Model. So in der Art kann das aussehen.

$relationModel = new Relation();
$relationModel->userId = 1;
$relationModel->postId = 12;
$relationModel->save();

0

#3 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 25 August 2009 - 10:36 AM

Car
id
name

CarDriver
carId
driverId

Driver
id
name

Ich erstelle für CAR und DRIVER je einen CONTROLLER und einen MODEL

In den Relations-Methode von CAR und DRIVER erstelle ich die Relationen.

Kann ich anschließend

$relationModel = new CarDriver();
$relationModel->driverId = 1;
$relationModel->carId = 2;
$relationModel->save();

ausführen???

(Bin grad auf der Arbeit, daher kann ich das nun nicht direkt ausführen)
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#4 User is offline   Dave 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 187
  • Joined: 09-October 08

Posted 25 August 2009 - 10:46 AM

Du erstellst auch ein Model für CarDriver.

In den Models "Car" und "Driver" erstellst du die Relationen in etwa so:

class Car extends CActiveRecord {
public function relations()
    {
        return array(
            'drivers'=>array(self::MANY_MANY, 'Driver', 'CarDriver(carid, driverid)'),
        );
    }
}

Mehr dazu unter: http://www.yiiframew...de/database.arr



Da die Relation auch nur eine Tabelle ist, kannst du sie genauso verwenden, wie ein anders Model. Instanz erstellen, Werte zuweisen und abspeichern.
0

#5 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 25 August 2009 - 02:35 PM

class Car extends CActiveRecord {
public function relations()
    {
        return array(
            'drivers'=>array(self::MANY_MANY, 'Driver', 'CarDriver(carid, driverid)'),
            'car'=>array(self::MANY_MANY, 'Car', 'CarDriver(carid, driverid)'),
        );
    }
}


Wäre das nicht so "richtiger"?
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

#6 User is offline   Dave 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 187
  • Joined: 09-October 08

Posted 26 August 2009 - 04:37 AM

Nein, da ein Car ja keinem Car zugeordnet ist. Die Relation sagt ja nur das ein "Car" mehrere "Driver" haben kann und eine "Driver" mehrere "Car"s.
0

#7 User is offline   yii 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 440
  • Joined: 25-July 09

Posted 22 September 2009 - 03:15 PM

Hi,
wir kontrolliert ist ob die Werte in der Verknüpfungstabelle eindeutig sind?
Ich habe der Verknüpfungstabelle einen UNIQUE - Key zugeordnet, jedoch kriege ich folgende verständliche Fehlermeldung wenn ich einen doppelten Wert eintrage.

CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '7-7' for key 'PRIMARY'


Wie löse ich das Problem am elegantesten?
Meine Fragen stelle ich öffentlich und baue somit eine Wissensdatenbank für andere auf!
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users