将用户链接到没有直接关系的项目

时间:2016-09-30 10:51:16

标签: laravel laravel-5.2

我想知道如何做某事。我进行API调用以检索大量项目。

$projects = APIHelper::returnRequestedProjects();

被调用的API在另一台服务器上,返回的是一个数组。在我自己的Laravel项目中,我有一个拥有自己用户的数据库。我没有针对这些用户建模项目。但是,上面返回的每个产品都有一个user_id,它与我系统中用户的id匹配。

我需要做的是获取每个项目的用户模型。如果我正在处理一个项目,我可以在我的控制器中执行类似的操作

$user = User::where('id', $project->user_id);

当API调用返回一个项目数组时,我将它直接传递给我的视图。然后我会做这样的事情

@foreach($projects as $project)

@endforeach

我如何将项目user_id与系统中的用户匹配?

由于

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您将从远程服务器获得响应,其中包含获取用户数据所需的数据数组。

$projects = APIHelper::returnRequestedProjects();

因此,在控制器方法中,

$ids = [];
foreach ($projects as $project) {
    $ids[] = $project['user_id']; // Assuming the user_id is the id field
}

$returnArray = [];
foreach ($ids as $id) {
    $returnArray[] = User::where('id', $id)->first();
}

将返回数组传递到视图中:

return view('example.view', ['returnArray' => $returnArray]);

然后在视图中......

@foreach($returnArray as $value)
    {{$value->id}}
@endforeach

编辑:在评论中回答问题......

$returnArray[$project['id']] = User::where('id', $id)->first();

在您的视图中,returnArray键现在是您检索的项目的实际ID。

@foreach($returnArray as $projectId => $user)
    Project ID: {{$projectId}}, User ID: {{$user->id}}
@endforeach

答案 1 :(得分:1)

你可以尝试这个:

foreach($projects as $project) {
    $project['user'] = User::where('id', $project['used_id'])->first();
}