【发布时间】:2017-03-01 20:21:43
【问题描述】:
我正在尝试填充选择下拉列表,但没有看到值通过。
控制器:
public function create()
{
$employees = Employee::get();
$am = DB::table('employees')
->where('department', 'Account Manager')
->select('id', 'name')
->orderBy('name', 'asc')
->get();
$pm = DB::table('employees')
->where('department', 'Project Manager')
->select('id', 'name')
->orderBy('name', 'asc')
->get();
$employees->am = $am;
$employees->pm = $pm;
return view('projects/create', [
'employees' => $employees
]);
}
查看:
<div class="form-group">
<label>Account Manager</label>
<select class="form-control" name="am">
<option value=""></option>
@foreach ($employees as $employee)
<option value="{{ $employee->am['id'] }}">{{ $employee->am['name'] }}</option>
@endforeach
</select>
</div>
<div class="form-group">
<label>Project Manager</label>
<select class="form-control" name="pm">
<option value=""></option>
@foreach ($employees as $employee)
<option value="{{ $employee->pm['id'] }}">{{ $employee->pm['name'] }}</option>
@endforeach
</select>
</div>
所以,我知道有些东西在起作用,因为下拉菜单显示有 5 个空格,它们是数据库中的记录数,但它们都是空白的。执行 var_dump 显示它为 NULL。此外,它没有考虑 WHERE 子句,因为两个下拉菜单都显示 5 个空格,而不是项目经理的 3 个和客户经理的 2 个。
我的模型没有建立任何关系。它必须吗?因为我为不同的视图做了一个连接,它工作得很好。
我的数据库表如下所示:
项目:
id
name
am_id
pm_id
员工:
id
name
department
任何想法如何让值填充到下拉列表中?
【问题讨论】:
-
你试过
@foreach ($employees->am as $employee)吗? -
出错并显示“Undefined Property $am”
-
如果你使用我上面所说的 foreach 修改,你也想改变你的
<option>代码。也许是这样:<option value="{{ $employee->id }}">{{ $employee->name }}</option>(我不确定$employee是一个数组还是一个对象。) -
谢谢!那行得通,但我想知道为什么这样我可以更好地理解它。我的另一个问题位于此处:stackoverflow.com/questions/41203590/… 能够以我原来的方式做到这一点。
-
使用 laravelcollective.com/docs/5.3/html ,这是在 laravel 应用程序中在表单上生成选择元素的最简单方法
标签: php database laravel-5 eloquent