Yii Framework Forum: Eine View, Daten Aus 2 Models - Yii Framework Forum

Jump to content

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

Eine View, Daten Aus 2 Models Rate Topic: -----

#1 User is offline   vildenxx 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 12-December 12

Posted 12 December 2012 - 04:23 AM

Hey :)

Ich bin gerade dabei mit Yii eine kleine Anwendung zu erstellen.
Habe eine MySQL Datenbank dranhängen die 2 Tabellen hat: Kunde und Aufträge.
Beide sind verknüpft und im jeweiligen model ist bereits die relation eingefügt und es funktioniert auch.

Kann also in einer View den Kunden mit EINEM Auftrag anzeigen.

<?php $this->widget('zii.widgets.CDetailView', array(
	'data'=>$model,
	'attributes'=>array(
		'ID',
		'Name',
		'Vorname',
		'Geburtsdatum',

		...
	),
)); ?>


<?php $this->widget('zii.widgets.CDetailView', array(
	'data'=>$model,
	'attributes'=>array(
	'iD.AuftragID',
	'iD.AuftragDatum',
        ...
	),
)); ?>


Da ich nun aber nur einen Auftrag angezeigt bekomme und ich sowieso gerne diese Button für Anzeigen, Bearbeiten und Löschen haben möchte, wollt ich CGridView nehmen.

$dataProvider2=new CActiveDataProvider('Auftrag'); //ja, hat in der view eigentlich nichts zu suchen ;)

<?php $this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'Auftrag-grid',
	'dataProvider'=>$dataProvider2,
	'columns'=>array(
		'AuftragID',
		'AuftragDatum',
	         ...
		         array(
			'class'=>'CButtonColumn',
		),
	),
)); ?>


Leider komm ich mit der Logik noch nicht ganz klar wie ich das am besten angehe. Es sollten halt alle Aufträge von dem einem Kunden angezeigt werden. (Momentan werden alle angezeigt was auch klar ist bei dem Code). Quasi muss eine Suchanfrage an die Datenbank gehen, damit die ganzen Aufträge zu der ID gefunden und angezeigt werden (?)
Könnt Ihr mir da nen Tipp geben ? :)
0

#2 User is offline   julian90 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 64
  • Joined: 28-February 11

Posted 12 December 2012 - 04:50 AM

Naja wie immer giebt es viele wege nach Rom ^^.

Also erst mal ich weiß nicht wie du die Relation gemacht hast aber so wie du es schielderst sollte es ein "HAS_MANY" sein.

So du kannst ja in deinem CActiveDataProvider ein Criteria angeben.

Das würde dann so aus sehen.
$dataProvider2=new CActiveDataProvider('Auftrag',array(
    'criteria'=>array(
        'condition'=>'AuftragID=1',
    ),
    'pagination'=>array(
        'pageSize'=>20,
    ),
));


2 Beispiel:


$criteria = new CDbCriteria();
$criteria->condition = 'AuftragID=1';
 
$dataProvider2=new CActiveDataProvider('Auftrag',array(
    'criteria'=>$criteria,,
    'pagination'=>array(
        'pageSize'=>20,
    ),
));

0

#3 User is offline   vildenxx 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 12-December 12

Posted 12 December 2012 - 05:21 AM

View Postjulian90, on 12 December 2012 - 04:50 AM, said:

Naja wie immer giebt es viele wege nach Rom ^^.

Also erst mal ich weiß nicht wie du die Relation gemacht hast aber so wie du es schielderst sollte es ein "HAS_MANY" sein.

So du kannst ja in deinem CActiveDataProvider ein Criteria angeben.

Das würde dann so aus sehen.
$dataProvider2=new CActiveDataProvider('Auftrag',array(
    'criteria'=>array(
        'condition'=>'AuftragID=1',
    ),
    'pagination'=>array(
        'pageSize'=>20,
    ),
));


2 Beispiel:


$criteria = new CDbCriteria();
$criteria->condition = 'AuftragID=1';
 
$dataProvider2=new CActiveDataProvider('Auftrag',array(
    'criteria'=>$criteria,,
    'pagination'=>array(
        'pageSize'=>20,
    ),
));



Vielen Dank :) Jetzt muss ich nur noch hinbekommen das er die KundenID selber findet und das nicht immer hardcoded in condition steht.

EDIT: geschafft :)

Was mir jetzt noch aufgefallen ist, die Buttons in dem GridView, verweisen auf Patient, möchste die aber auf Untersuchung verweisen lassen.
0

#4 User is offline   mbi 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 608
  • Joined: 08-May 09

Posted 12 December 2012 - 06:08 AM

dein ActiveRecord Customer bekommt eine Relation orders

public funtion relations()
{
  return array(
    'orders' => array(self::HAS_MANY, 'ORDER', 'customerId')
  );
}


und dein CGridView in customer/view bekommt einen CArrayDataProvider

'dataProvider' => new CArrayDataProvider($model->orders)

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