laravel - 如何合并从一对一的关系返回
问题描述
我在 laravel 中使用一对一的关系。我有两个模型,一个是 User,另一个是 UserDetails。
关系在用户模型中
public function userDetails(){
return $this->hasOne(UserDetail::class);
}
我称这些模型是这样的
public function index()
{
$user = User::find(2);
$user->user_details = $user->userDetails;
echo "<pre>"; print_r($user->toArray()); die;
}
但我打印的回报是这样的: -
Array
(
[id] => 2
[name] => Joney
[email] => joney@gmail.com
[email_verified_at] => 2019-04-29 02:01:03
[password] => dasDSADASDASDAS
[status] => Active
[remember_token] => DSADASd
[created_at] => 2019-04-29 00:00:00
[updated_at] => 2018-09-24 02:00:00
[user_details] => Array
(
[id] => 2
[user_id] => 2
[address] => Dhampur
[mobile_number] => 8006009195
[passport_number] => sasdadasd
[zip_code] => 201301
[created_at] => 2019-04-29 06:00:00
[updated_at] => 2019-04-29 02:00:00
)
)
所以我想在将细节合并到一个对象后得到回报。
谢谢
解决方案
试试下面的代码:
$user = User::with('userDetails')->find(2);
$user->user_detail_id = $user->userDetails->id;
$user->address = $user->userDetails->address;
$user->mobile_number = $user->userDetails->mobile_number;
$user->passport_number = $user->userDetails->passport_number;
$user->zip_code = $user->userDetails->zip_code;
unset($user->userDetails);
echo "<pre>"; print_r($user->toArray()); die;
谢谢。
推荐阅读
- wordpress - 上传完成时媒体库“HTTP 错误”
- c# - Xceed DocX 库与 .Net Core 2.0 一起使用时会创建空白 .docx 文件
- r - (错误)在`xts`中理解`first`
- sql - 连接多个表/约束或 has_one_through 与辅助约束
- android - FirebaseRecyclerAdapter 无法应用于
- cordova - 按下硬件后退按钮时的 Cordova Angular 应用程序,打开上次打开的视图
- xamarin - 如何在不旋转设备的情况下更改 Xamarin.Forms 中的视图方向?
- html - 溢出时不出现点
- cordova - 离子科尔多瓦资源--splash错误
- .net - VS Code C# 扩展报告缺少 .NETFramework,Version v4.5