Laravel 8 多个模型到单个视图错误 $address 未定义

Laravel 8 multiple models to single view Error $address Not defined

我正在尝试使用 findOrNew() 在数据库中创建 2 行,但是当我使用用户模型中的 ID 创建另一个模型(地址)时,程序 returns 未定义变量 $address。我不知道我是否使用了正确的方法。您可以在下面查看我的方法。你能告诉我正确的方法或在哪里找到它吗?

2个模型一个视图:

看到你的方法中有什么返回未定义,因为它没有正确执行 findOrNew 方法, and this same

第二个是,如果您通过 post 传递值,所有内容都会在 $req 参数中找到您,只有在那里,如果您想要使用 id,您必须通过 $req 访问->id 如果你发送数据正确

第三个,我看到在视图方法中你传递了 3 个参数,而你应该只传递两个参数,第一个是视图的名称,第二个是你将传递给视图的数据的排列方式

public function detail(Request $req)
{
    $user = User::firstOrNew($req->id);
    $user->user_type_id = 1;
    $user->name = $req->name;
    $user->last_name = $req->last_name;
    $user->email = $req->email;
    $user->password = Hash::make(Str::random(8));
    $user->save();

    $address = UserAddress::firstOrCreate(['user_id' => $req->id]); //or maybe $user->id

    return view('user.detail', [
        'user' => $user,
        'adderss' => $address
    ]);
}

最后您可能更喜欢使用 updateOrCreate 方法

public function detailV2(Request $req)
{        
    $user = User::updateOrCreate(
        ['id' => $req->id],
        [
            'user_type_id' => 1,
            'name' => $req->name,
            'last_name' => $req->last_name,
            'email' => $req->email,
            'password' => Hash::make(Str::random(8)),
        ]
    );

    $address = UserAddress::firstOrCreate(['user_id' => $user->id]);

    return view('user.detail', [
        'user' => $user,
        'adderss' => $address
    ]);
}