laravel - 使用关系数据 Laravel 保存到数据库
问题描述
我正在学习 Laravel 关系,遇到了一个我似乎无法解决的小问题。
基本上我有一个具有一对一关系的客户端和地址模型。创建新客户端时,我想捕获该客户端的地址,但它是可选的。
当创建一个新客户端并且不输入任何地址值时,显然会创建一个关系,但条目为空。
是否可以创建客户端,先检查客户端是否有地址,如果没有,不要创建关系?另外,更新方法也一样吗?
public function store(Request $request)
{
// Create the client
$client = Client::create($request->all());
// Relate address
$address = new \App\Address($request->all());
$client->address()->save($address);
return redirect()
->route('clients.index');
}
public function update(Request $request, Client $client)
{
// update the client
$client->update($request->all());
$address = [
'address_1' => $request->address_1,
'address_2' => $request->address_2,
'address_3' => $request->address_3,
'city' => $request->city,
'postcode' => $request->postcode,
];
// update the address
$client->address()->updateOrCreate($address);
return redirect()->route('clients.index');
}
此外,如果有任何关于更好的解决方法的建议,将不胜感激。
解决方案
尝试这个 :
public function store(Request $request)
{
// check if the address is not empty
if (!empty($request->get('address')){
// Create the client
$client = Client::create($request->all());
// Relate address
$client->address()->create($request->get('address'));
return redirect()
->route('clients.index');
}else{
return back()->withError('Empty address');
}
}
推荐阅读
- r - 从日期/时间格式中提取时间
- apache-spark - 将 toEpochDate 与带有 Spark Scala 的数据框一起使用的语法 - 优雅
- android - react native - AWS + React native 使用图像注册
- php - 选择重复 uid 的最新记录
- knockout.js - 如何在不使用计算的 observables 的情况下将可观察数组上的 Knockout foreach 一次限制为 5 个?
- sql-server - 忽略字段中的换行符
- javascript - 加快滚动文本
- android - 当我使用 TYPE_APPLICATION_OVERLAY 时,对话框不可见
- django - 发布请求时的 Django Rest API VIEWSET 自定义验证
- ag-grid - 如何在 ag-grid 顶部添加水平滚动条