2017-06-26 12 views
0

helpdesk_ticketをuser_idに接続するピボットテーブルへの関係を、チケットを最後に見た時間を記述した追加の列とともに保存します。私は解決策を見つけましたが、最適化する方法を探していますが、これはちょっとハッキリしているようです。私はlaravelでオブジェクトを反転させる方法を探しています

私が返信しているオブジェクトは、添付されたユーザー関係の保存された関係です。

期待どおり、次のオブジェクトが返されます。

{ 
    "id": 27, 
    "helpdesk_ticket_id": 1, 
    "users_id": 20, 
    "ticket_notifications": 1, 
    "ticket_emails": 1, 
    "created_at": "2017-06-26 10:13:00", 
    "updated_at": "2017-06-26 10:13:00", 
    "viewed_at": null 
    "user": { 
    "id": 20, 
    "name": "Nate", 
    "username": "nate", 
    "email": "[email protected]", 
    "config": "", 
    "ad_connected": true, 
    "is_store": false, 
    "force_reset": false, 
    "disabled": false, 
    "last_login": "2017-01-19 08:05:00", 
    "created_at": "2016-10-04 18:15:00", 
    "updated_at": "2017-05-31 12:00:00", 
    "phone": null, 
    "district_id": null, 
    "deleted_at": null, 
    } 
} 

私は実際にオブジェクトの順序を逆にして、私が以下のような保存された関係のピボットでユーザーを戻すようにしたいと思います。

{ 
    "id": 20, 
    "name": "Nate", 
    "username": "nate", 
    "email": "[email protected]", 
    "store_id": 89, 
    "config": "", 
    "ad_connected": true, 
    "is_store": false, 
    "force_reset": false, 
    "disabled": false, 
    "last_login": "2017-01-19 08:05:00", 
    "created_at": "2016-10-04 18:15:00", 
    "updated_at": "2017-05-31 12:00:00", 
    "phone": null, 
    "district_id": null, 
    "deleted_at": null, 
    "pivot": { 
    "id": 27, 
    "helpdesk_ticket_id": 1, 
    "users_id": 20, 
    "ticket_notifications": 1, 
    "ticket_emails": 1, 
    "created_at": "2017-06-26 10:13:00", 
    "updated_at": "2017-06-26 10:13:00", 
    "viewed_at": null 
    } 
} 

私は現在動作しているコードですが、私はそれに満足していません。これを最適化する最良の方法は何ですか?

$involved = HelpdeskTicketInvolved::where('helpdesk_ticket_id', $ticket_involved_user->helpdesk_ticket_id)->where('users_id', $ticket_involved_user->users_id)->with('user')->first()->toArray(); 
     $return = $involved['user']; 
     $return['pivot'] = $involved; 
     unset($return['pivot']['user']); 

     return Response::json($return, 200); 

答えて

1

私が正しくあなたを理解していれば、あなたは行って、何が必要かもしれません:

public function helpdeskTicketInvolved() { 
     return $this->hasMany(HelpdeskTicketInvolved::class)->withPivot(["ticket_notifications","ticket_emails"])->withTimestamps(); 
} 
+0

呼び出しへのネガがあります

User::with("helpdeskTicketInvolved")->find($userid); // Assuming you know the user id you want. 

をこれは、あなたが持っているユーザーモデルであることを前提としてい関与するコントローラのUserモデルそれともこれはかなり標準的なユースケースですか? – bstory

+0

これがどのように行われるかによって異なります。たとえばルートはuser/{id}/involve/{iid}を経由しています。それは標準です。そうでなければ、おそらくそれはその標準ではない。 – apokryfos

+0

ありがとう、これは多くの助けとなりました。 – bstory

関連する問題