目前运行Laravel 4.1.31。 在控制器的阵列是建立用户与他们的ID作为关键:
$owners = User::get()->lists('username','id');
印刷业主阵列出在控制器级别将产生以下:
print_r($owners)
// Array
// (
// [1] => user1
// [2] => user2
// [4] => user3 <--- key jumps to 4, this is correct
// [5] => user4
// [6] => user5
// )
然而,一旦该阵列被传递到一个视图中的键时,不保留,打印出来在视图级产生以下:
// Array
// (
// [1] => user1
// [2] => user2
// [3] => user3 <--- key was replaced with 3, this is incorrect
// [4] => user4 all values from this point on are now shifted
// [5] => user5
// )
不过,有人一旦被传递给视图的一切原始数组中没有3键转移到填补缺口。 这最终导致问题,因为所有的ID的上述2现在是不匹配的。 如何才能阵列按键会保留吗?
全控制器的方法:
public function edit($id) {
// get the task
$task = $this->task->find($id);
// grab all users for owner field
$owners = User::get()->lists('username','id');
// grab all projects for project field
$projects = Project::get()->lists('title','id');
// add placeholder to beginning of arrays
array_unshift($owners, 'Select Owner');
array_unshift($projects, 'Select Project');
// return show view
return View::make('tasks.edit', array(
'task' => $task,
'status' => $this->status,
'projects' => $projects,
'owners' => $owners
));
}