【发布时间】:2017-05-07 07:48:09
【问题描述】:
我有一个允许用户创建项目和分配任务的系统。现在我正在尝试确定一个视图以显示由当前用户创建或分配给当前用户的所有项目。我用三个表users、projects 和project_user 建立了多对多关系。项目表有一个列 user_id 表示谁“拥有”它。
我尝试将merge method 用于基于this question 的集合,但我无法让它工作。
$projects = new \Illuminate\Database\Eloquent\Collection();
$userProjects = Project::where(array('company_id' => Auth::user()->company_id, 'user_id' => Auth::user()->id))
->orderBy('created_at', 'asc')
->get();
//foreach($userProjects as $up){
$projects = $projects->merge($userProjects);
//}
$assignedProjects = User::where('id', Auth::user()->id)->with('project')->orderBy('created_at', 'asc')->get();
foreach($assignedProjects as $assigned){
$projects = $projects->merge($assigned->project);
}
dd($projects->all());
然后我尝试转换为数组,然后手动创建了一个对象,但这也没有用,我担心资源问题。
$userProjects = Project::where(array('company_id' => Auth::user()->company_id, 'user_id' => Auth::user()->id))
->orderBy('created_at', 'asc')
->get()->toArray();
$assignedProjects = User::where('id', Auth::user()->id)->with('project')->orderBy('created_at', 'asc')->get()->toArray();
$projects = array_merge((array) $userProjects, (array) $assignedProjects[0]['project']);
$cleaned = array_unique($projects, SORT_REGULAR);
$merge = array('projects' => (object) $cleaned);
$projects = (object) $merge;
dd($projects);
目标是以某种方式将这些组合到集合中,以便我可以使用 $project->title 从视图访问它(例如)。
当我刚刚为用户“拥有”的项目执行此操作时,它工作正常,现在我如何让它工作以显示用户拥有的项目和分配给用户的项目? p>
【问题讨论】: