首页 > 解决方案 > 如何合并从一对一的关系返回

问题描述

我在 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
        )

)

所以我想在将细节合并到一个对象后得到回报。

谢谢

标签: laravel

解决方案


试试下面的代码:

    $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;

谢谢。


推荐阅读