Symfony2将数据与另一个表中的现有数据进行比较

时间:2014-08-18 12:22:52

标签: mysql sql symfony

我根据当前用户输出任务列表。

我的任务表如下所示:

ID | Task Title | User |

我还有一个名为“TaskDone”的第二个表

我将任务标记为特定用户的“完成”时存储。例如:

ID | Task ID | User ID |
 1 |    13   |    3    |

当我现在输出用户ID 3的任务列表时,我得到一个分配给用户ID 3的所有任务的列表。但现在我想检查列表中是否有任务,其中有一个条目表“TaskDone”,用户ID =当前用户和任务ID =输出列表中任务的ID。

我的控制器看起来像这样:

/**
@Route(
 *     path = "/taskmanager/user/{id}",
 *     name = "taskmanager"
 * )
 * @Template()
 */
public function taskManagerAction($id)
{

    $priorities = array(
        0 => array('name' => 'Hoch', 'class' => 'high' ),
        1 => array('name' => 'Normal', 'class' => 'normal' ),
        2 => array('name' => 'Niedrig', 'class' => 'low' )
    );

    $all_tasks = $this->getDoctrine()
        ->getRepository('SeotoolMainBundle:Task')
        ->findAll();

    $user = $this->getDoctrine()
        ->getRepository('SeotoolMainBundle:User')
        ->findAll();

    return array(
        'list_user' => $user,
        'list_open_tasks' => $all_tasks,
        'current_user' => $id,
        'priorities' => $priorities,
    );

}

我的任务列表输出如下:

{% for task in list_open_tasks if (task.user.id == current_user or task.user.id == "global") and task.taskPriority == priority.name %}

    {{ task.taskTitle }}
    # HERE I WANT TO CHECK IF THERE IS AN ENTRY IN TASKDONE TABLE FOR THIS TASK AND THIS USER

{% endfor %}

有没有人有想法?

1 个答案:

答案 0 :(得分:0)

您需要在控制器中执行此操作!

此代码会将TaskDone实体中的所有条目作为数组提供给您,其中user_id与给定的$id相同。

$tasks_done = $this->getDoctrine() ->getRepository('SeotoolMainBundle:TaskDone') ->findBy(array('user' => $id); 

将结果保存在$tasksDone之类的数组中,并将其返回到TwigTemplate。

return array(
    'list_user' => $user,
    'list_open_tasks' => $all_tasks,
    'current_user' => $id,
    'priorities' => $priorities,
    'tasks_done' => $tasksDone
);

然后你就像任何其他Twig Variable

那样给出它们