2013-12-06 3 views
3

У меня есть 2 таблицы: проекты, project_types.Cakephp, как создать виртуальное поле, основанное на другом столе

The relations are as follow: 
    Project => belong to => ProjectType  
    ProjectType => hasMany => Project 

The columns are as follow 
    Project => id, project_type_id, name, description 
    ProjectType => id, name 

Как я могу создать виртуальное поле, называемое projectTypeName с именем из projectType на основе project_type_id и для тех, кто project_type_id = 0, то это будет «»

У меня есть этот

public $virtualFields = array(
    'projectTypeName' => "IF(Project.project_type_id = 9, 'sales', '')"  
);  

он правильно показывает как «продажи», но я не хочу указывать его один за другим.

Спасибо

+0

Кажется мне, что вы должны хранить имя ProjectType на модели ProjectType, а затем просто получить соответствующий ProjectType, когда вы получите ваш проект для того, чтобы знать имя ProjectType. – Kai

+0

это не работает, потому что я планирую использовать разбиение на страницы через другую модель, где я не могу глубже перейти к ProjectType. поэтому я планирую использовать виртуальное поле. У меня есть вопросы здесь, но поскольку ответа нет, поэтому я планирую сделать другим способом http://stackoverflow.com/questions/20412999/containable-to-do-show-deeper-data-or-join-table/20413134? noredirect = 1 # 20413134 – Harts

ответ

4

Это работает для меня

public $virtualFields = array(
'projectTypeName' => 'SELECT name FROM project_types where id = Project.project_type_id' 
);  
Смежные вопросы