【问题标题】:Linking user to project without direct relationship在没有直接关系的情况下将用户链接到项目
【发布时间】:2017-02-08 22:20:44
【问题描述】:

我正试图弄清楚如何做某事。我进行 API 调用以检索大量项目。

$projects = APIHelper::returnRequestedProjects();

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

我需要做的是获取每个项目的用户模型。如果我正在处理一个项目,我可以在我的控制器中做这样的事情

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

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

@foreach($projects as $project)

@endforeach

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

谢谢

【问题讨论】:

    标签: laravel laravel-5.2


    【解决方案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
    

    编辑:在 cmets 中回答问题...

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

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

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

    【讨论】:

    • 谢谢,很有帮助。我看到的唯一问题是我现在将 $returnArray 传递回包含用户列表的视图。但是,我也将项目传递回我的视野。如何将用户关联到正确的项目?
    • 超级简单。您可以操作数组键!我要编辑我原来的回复,让它看起来很漂亮......
    【解决方案2】:

    你可以试试这个:

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

    【讨论】:

      猜你喜欢
      • 2021-06-07
      • 1970-01-01
      • 2013-05-23
      • 2012-10-05
      • 2017-09-04
      • 2013-11-07
      • 1970-01-01
      • 2012-07-25
      • 2018-02-12
      相关资源
      最近更新 更多