2009-09-25 2 views
0

На самом деле я пытаюсь использовать dotproject для создания своего собственного небольшого приложения.
Я застрял в точке, где DotProject отображает все задачи, связанные с конкретным проектом .Это запрашивает базу данных для этого обжиг SQL ниже
extend dotproject

$q->addJoin('tasks', 't1', 'projects.project_id = t1.task_project'); 
    $q->addQuery('com.company_name AS company_name, com_internal.company_name' 
       . ' AS company_name_internal' 
       . ", CONCAT_WS(', ',contact_last_name,contact_first_name) user_name" 
       . ', projects.*, SUM(t1.task_duration * t1.task_percent_complete' 
       ." * IF(t1.task_duration_type = 24, {$working_hours}, t1.task_duration_type))" 
       ."/SUM(t1.task_duration * IF(t1.task_duration_type = 24, {$working_hours}," 
       . ' t1.task_duration_type)) AS project_percent_complete'); 

    $q->addWhere('t1.task_id = t1.task_parent'); 
$q->addWhere('project_id = ' . $project_id); 
$q->addGroup('project_id'); 

Я не могу понять SQL properly.Actually , этот sql извлекает все задачи, связанные с проектом. Но в моем проекте я хочу только те задачи, продолжительность которых завершена.

Как мне изменить sql, чтобы это произошло?

ответ

0

Вы можете упростить большинство из этого и просто посмотреть поле task_percent_complete в таблице задач. Если это 100%, задача завершена.

Если вы хотите создать приложение поверх dotproject, я бы предложил вам проверить web2project. Мы раздвоились из dotproject около двух лет назад и значительно улучшили и улучшили систему. Если у вас есть какие-либо вопросы, напишите мне.

0

Я знаю, что это слишком много поздно, чтобы ответить, но надеюсь, что кто-то получит ключ от этого:

Просто добавьте где-то запрос, как $q->addWhere('task_percent_complete = 100');

Всего ваш код будет как:

$q->addJoin('tasks', 't1', 'projects.project_id = t1.task_project'); 
$q->addQuery('com.company_name AS company_name, com_internal.company_name' 
      . ' AS company_name_internal' 
      . ", CONCAT_WS(', ',contact_last_name,contact_first_name) user_name" 
      . ', projects.*, SUM(t1.task_duration * t1.task_percent_complete' 
      ." * IF(t1.task_duration_type = 24, {$working_hours}, t1.task_duration_type))" 
      ."/SUM(t1.task_duration * IF(t1.task_duration_type = 24, {$working_hours}," 
      . ' t1.task_duration_type)) AS project_percent_complete'); 

$q->addWhere('t1.task_id = t1.task_parent'); 
$q->addWhere('project_id = ' . $project_id); 
$q->addWhere('t1.task_percent_complete = 100'); // added new line 
$q->addGroup('project_id');