model-view-controller - Laravel 8 多个模型到单一视图错误 $address 未定义
问题描述
我正在尝试使用 findOrNew() 在数据库中创建 2 行,但是当我使用用户模型中的 ID 创建另一个模型(地址)时,程序返回未定义的变量 $address。我不知道我是否使用了正确的方法。您可以在下面查看我的方法。你能引导我找到正确的方法或在哪里找到它吗?
2模型一视图:
解决方案
看到你的方法中有什么返回一个未定义的,因为它没有正确执行 findOrNew 方法,检查这个链接,也许它会帮助你,这同样
第二个是,如果您通过邮寄方式传递值,那么所有内容都会在 $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
]);
}
推荐阅读
- angular - 在 Ionic 中生成 OpenLayers 地图作为组件
- reactjs - 在 create-react-app 中运行“npm test”时如何忽略某些文件?
- batch-file - 在批处理脚本中解析特定文件夹中的大量 .xml 文件时丢弃一组特定的 .xml 文件
- java - 在测试中提供数据源 bean - 带有限定符
- ios - 在转换时间获得 - 值时,是否可以更正代码?
- c# - C# HttpClient POST 请求句柄响应
- excel - 表格和自动计算的问题
- amazon-web-services - 如何允许第 3 方通过 API 网关将对象放入 S3?
- python - 如何使用 Pandas 从数据库和本地数据框中进行选择?
- angular - 在模板中调用函数会导致 Angular2+ 中的性能问题吗?