我正在尝试将 foreach
中的变量传递给我的视图 . 所以我可以在我的选择表单中使用它 . 因为我有两个表M:M关系 departments 和 user . 我需要得到 user_id
所属的所有 department_name
. 我可以通过 department_name
发送数据这里我做了什么请看看 .
数据库图:
department_user
正如您在此处所见 user_id
是用户的ID, document_id
是用户所属的位置 .
模型:
部门:
public function users()
{
return $this->belongsToMany('\App\Models\User', 'department_user');
}
用户:
public function departments()
{
return $this->belongsToMany('App\Models\Department', 'department_user');
}
控制器:
public function getDocuments()
{
$departmentRecipient = DB::table('departments')->get();
foreach ($departmentRecipient as $department)
{
$department->users = DB::table('department_user')
->where('department_id', '=', $department->id)
->pluck('user_id');
}
return view('document.create')->with('department', $department);
}
我死的时候收到所有的users_id并转储我的变量 departmentRecipient
.
视图:
<div class = "form-group">
<label for = "recipient" class = "control-label">Recipient:</label>
<select name = "recipient[]" multiple class = "form-control select2-multi" id = "myUserList">
@foreach ($department as $list)
<option value = "{{ $list->user_id }}">{{ $list->department_name }}</option>
@endforeach
</select>
</div>
我想在控制器中将 foreach
$department
改为我的选择表格 . 但它总是说 .
尝试获取非对象的属性(查看:C:\ Users \ JohnFrancis \ LaravelFrancis \ resources \ views \ document \ create.blade.php)
目标:
4 回答
使用以下循环迭代部门用户并将其添加到数据透视表 .
同时从
getDocuments()
删除以下代码,因为它是多余的:我在
$departmentRecipient
对象的转储值中没有看到user_id
属性,这就是为什么你得到你提到的错误 . 但是,在$departmentRecipient
对象中有一个用户数组,它是在foreach
循环中创建的 . 您正在为每个user_id
进行处理,这些部门位于单个部门并设置在$departmentRecipient
对象的名为users
的属性中,因此您将在users
属性中获取一个数组 . 在这里,我有一个解决方案,并且你的视图内部循环遍历变量
$departmentUsers
,就像这样,这将有效,但由于您的部门包含多个用户,因此您将在
select2
下拉列表中多次获得单个部门名称 . 如果您通过select2
分享更多您的目标,那么我可以帮助您以其他方式解决您的问题 .此外,如果你有兴趣使用Eloquent,那么你可以摆脱很多
foreach
循环 .在您的情况下,您可以针对每个部门拥有多个用户 . 所以要使它与你的forearch代码一起正常工作 . 您需要确保每个离开时都获得一个用户记录 . 因此,修改控制器中的以下代码行 .
但是您希望显示部门的所有用户,然后您必须将foreach循环代码更改为视图 .
试试此代码
应用程序/部门
应用/用户
调节器
视图