如何在PHP laravel中访问以下数据

c2e8gylq  于 2023-10-15  发布在  PHP
关注(0)|答案(2)|浏览(92)

我想从以下数据访问user_projects

{
    "id": 1,
    "title": "Random",
    "description": "Null",
    "client_id": 3,
    "deadline": "2023-10-13 18:30:05",
    "status": "Proposal",
    "created_at": "2023-10-13T05:26:17.000000Z",
    "updated_at": "2023-10-13T05:26:17.000000Z",
    "user_projects": [
        {
            "id": 1,
            "name": "Rosendo Pfannerstill III",
            "email": "[email protected]",
            "email_verified_at": null,
            "is_client": 0,
            "address": null,
            "country": null,
            "phone_number": null,
            "profile_image": null,
            "created_at": "2023-10-13T05:15:47.000000Z",
            "updated_at": "2023-10-13T05:15:47.000000Z",
            "pivot": {
                "project_id": 1,
                "user_id": 1
            }
        },
        {
            "id": 22,
            "name": "MukeshPrakash",
            "email": "[email protected]",
            "email_verified_at": null,
            "is_client": 0,
            "address": null,
            "country": null,
            "phone_number": null,
            "profile_image": null,
            "created_at": "2023-10-13T05:17:12.000000Z",
            "updated_at": "2023-10-13T05:17:12.000000Z",
            "pivot": {
                "project_id": 1,
                "user_id": 22
            }
        }
    ]
}

我从下面的控制器函数得到这个输出

public function clientsAndUsers($id)
{
    $projects = Project::with('userProjects')->find($id);

    echo $projects;
}

这个数据来自belongsToMany的雄辩关系。这里我没有使用echo,而是将数据发送到一个视图,但我不知道如何访问users_projects
我已经试过这个

$projects->user_projects

而这

$projects["user_projects"]

如果我把这个放在这样的循环上

foreach($projects as $project) {
    echo $project;
}

它奇怪地返回1三次。我不知道为什么,两者都没有返回任何东西,所以我不能把它放在一个循环中。
所以请帮我访问它,也解释一下。

vsikbqxv

vsikbqxv1#

你可以通过你的Eloquent关系访问它,你已经渴望加载(使用with('userProjects')):

$projects->userProjects

当Laravel将模型转换为json输出时,它会自动将关系名称转换为snake_case,这就是为什么使用user_projects键输出userProjects关系。因此,即使json显示user_projects,该键实际上并不存在于模型对象上,这就是为什么你不能像你尝试的那样访问它。

kjthegm6

kjthegm62#

你的问题不太清楚,但如果我理解正确的话。你想访问数据集中的user_projects数组。
你可以做

public function clientsAndUsers()
{
     $data = Project::with('userProjects')->get();
     //$projects = $data->user_projects;

    return view('dashboard', ['data'=> $data]);     
}

然后在你的刀锋视野中;

@foreach($data->user_project as $project)
  $project->id;
  $project->name;

@endforeach

相关问题