order in Relational Active Record

Hi!

I have two tables transactions and szamlaszam (it means account in hungarian). Between two tables has a relation: transaction.szamlaszam_id -> szamlaszam.id.

in transactions.php




	public function relations()

	{

		return array(

			'szamlaszam' => array(self::BELONGS_TO, 'szamlaszam', 'szamlaszam_id'),


	);



in szamlaszam.php




	public function relations()

	{

		return array(

			'transactions'=>array(self::HAS_MANY, 'transaction', 'szamlaszam_id'),


		);

	}



It’s ok, relation is workin.

I generated CRUD for transaction. In transactions admin.php view I replaced the szamlaszam_id column with szamlaszam.szam (it means account’s account number)


<td><?php echo CHtml::link($model->szamlaszam->szam,array('szamlaszam/show','id'=>$model->szamlaszam->id)); ?></td>

I want order transactions by szamlaszam.szam column, then I replaced in admin.php




    <th><?php echo $sort->link('szamlaszam_id'); ?></th>



with




    <th><?php echo $sort->link('szamlaszam.szam'); ?></th>



Here is the problem: it doesn’t order transactions by szamlaszam.szam.

Can anyone help?

Üdv a fedélzeten!

A $sort változó a CSort osztály egy példánya, és mint olyan, alkalmatlan az adatbázisrekordok rendezésére.

A vezérlődben kell a sorrendet beállítani, ami átadja a $model változót a sablonfájlnak.

$model=szamlaszam::model()->findAll(array(‘order’=>‘szam ASC’));

Vagy valami hasonló, a meglévő kód értelmében. Ha bemásolod, többet tudok segíteni.

Szia :)

Na szóval: a CSort nem pont erre van? A doksiban is benne van, hogy lehet rendezni kulso tabla mezoi szerint:

http://www.yiiframework.com/doc/api/CSort#link-detail

If it is an attribute of a related AR object, the name should be prefixed with the relation name (e.g. ‘author.name’, where ‘author’ is the relation name).

Most, hogy jobban atneztem a doksit, talaltam egy jo peldat (http://www.yiiframework.com/doc/api/CSort), holnap ki is probalom.

Nos, lehet rendezni a CSort-tal is, de nem a link metódusával. Az csak a táblában használt rendezés megváltoztatásához szükséges linket generálja.

Ha jól vettem ki a szavaidból, az alapértelmezett rendezést akarod módosítani, ahhoz pedig

  • vagy az ActiveRecord-hoz befolyó kérést módosítod a fent leírtak szerint,

  • vagy a CSort::defaultOrder értéket változtatod meg (ez esetben meg kell hívnod a CSort::applyOrder()-t egy CDbCriteria-n, amit az AR-kérésnél használsz fel).

Ha csak a CSort::link()-et akarod használni, akkor ellenőrizd, hogy jól konfiguráltad-e a $sort->attributes tömböt.

Nem az alapertelemezes szerintit, hanem amikor a tranzakciokat kilistazom, akkor nem a szamlaszam.szamlaszam_id szerint akarom rendezni a szamlaszam oszlopot, hanem a szamlaszam.szam alapjan.

Sorry, but could you keep it in english please in the general section? :)

It’s working! I forgot add alias to the relation and edit the attributes in CSort.

Thx for the help, I appreciate that.

( Sorry for the hungarian discussion )