在这种情况下,我们有3个表:
tasks (task_id, task_title,task_type)
managers (manager_id, manager_title, manager_type)
assigners (task_id, manager_id)
在TaskController.php
中,我有一个存储方法来创建新任务
public function store() {
$input = Input::all();
$this->task->create($input);
return Redirect::route('tasks.index');}
这就是我想要实现的目标:
task.created
,$task->task_title
与任何$manager->manager_title
进行比较,如果找到任何匹配项($task->task_title
LIKE $manager->manager_title
),则传递匹配的$task->task_id
和{ {1}}作为另一个事件的数组,在位于start / global的事件监听器中,它将在assigners表中创建具有从step2接收的值的新记录。事件监听器编写如下:
$manager->manager_id
我的问题:
答案 0 :(得分:2)
由于您需要新创建的任务,因此应该在创建任务之后。可能是在这一行之后。您可以按原样传递新创建的任务,或者传递task_id并在事件侦听器中获取它。但是你先抓住了这个任务。
$task = $this->task->create($input);
Event::fire('task.created', array($task) );
用于每个循环。
Event::listen('task.created', function($task)
{
$managers = getManagersForThisTask($task);
foreach($managers as $manager ){
Event::fire('task.created_step2', $task, $manager );
}
});