atk4 / atk4-addons

Agile Toolkit Addons
http://atk4.com/
Other
15 stars 23 forks source link

model with recursive reference does not work #31

Closed yavasura closed 11 years ago

yavasura commented 11 years ago

CRUD displays a table where region field is not visible. Create new and update works, only list is not working properly

class Model_Region extends Model_Table {
    public $entity_code='region';
    function init(){
        parent::init();
        $this->addField('name')->mandatory('true');
        $this->hasOne('Region');
    }
}
yavasura commented 11 years ago

quick filter is also not working

DarkSide666 commented 11 years ago

Recursive links never have worked well like that. You can try some workarounds. For example, use "fake" model, like Model_Region_Parent extends Model_Region and hasOne('Region_Parent','region_id') or something like that.

BTW:

romaninsh commented 11 years ago

Here is how you define parent as per DarkSides's comment:

class Model_Region_Parent extends Model_Region { public $alias='region_parent'; }

romaninsh commented 11 years ago

attempt to add support for this resulted in few big problems with models, so above fix should address the problem.

DarkSide666 commented 11 years ago

Hmm... didn't know that. Will have to try at some point.

BTW Romans, why you're not visible in IRC for last I guess 2 weeks? :)

yavasura commented 11 years ago

the above code do not work also:

sql looks like this: select SQL_CALC_FOUND_ROWS name,(select name from region where region.region_id = region.id ) region,id,region_id from region order by (select name from region where region.region_id = region.id ) limit 0, 25 []

my code:

class Model_Region extends Model_Table { public $table='region'; function init(){ parent::init(); $this->addField('name')->mandatory('true'); $this->hasOne('Region_Parent','region_id'); } }

class Model_Region_Parent extends Model_Region { public $alias='region_parent'; }

class page_region extends Page { function init(){ parent::init(); $crud=$this->add('CRUD'); $model = $crud->setModel('Model_Region'); $model->debug(); if($crud->grid){ $crud->grid->addPaginator(); $crud->grid->getColumn('name')->makeSortable(); $crud->grid->getColumn('region')->makeSortable(); $crud->grid->addQuickSearch(array('region','name')); } } }

DarkSide666 commented 11 years ago

Reopened in https://github.com/atk4/atk4-addons/issues/33