Home > Mobile >  How to access multiple object in request laravel
How to access multiple object in request laravel

Time:12-06

I'm passing two object in a POST request with axios from client (js) to server (php with laravel)

orderData and userData contain mutliple value, nested array...

  export const sendMail = (orderData, userData) => async () => {
  await axios({
    method: 'post',
    url: `${process.env.REACT_APP_API_URL2}mail`,
    data: { orderData: orderData, userData: userData },
  }).then((res) => {
    console.log('update mail send with success');
  });
};

Then, in laravel, i would like to access data.

i need to access name/email in userData, and title in orderData

What i have tried :

 $data = $request->all();
        $orderDatas = $data['orderData'];
        $UserDatas = $data['userData'];

        $userName = $UserDatas->get('name');
        $userEmail = $UserDatas->get('email');
        $title = $orderDatas->get('title'); 

I also know how to access data if i only pass one object in my request (for exemple, if I only pass "userData", i know " $userName = $request->get('name');" will get me the user name.

my error : "Call to a member function get() on array".

CodePudding user response:

you can not call get() on array as error describes this. Instead you should try this while using array.

 $data = $request->all();
 $orderDatas = $data['orderData'];
 $UserDatas = $data['userData'];

 $userName = $UserDatas['name'];
 $userEmail = $UserDatas['email'];
 $title = $orderDatas['title'];

CodePudding user response:

You don't really need $request->all(), as I assume the method has Request $request as part of the parameters.

orderData will be inside $request->orderData

userData will be inside $request->userData

print_r, var_dump or dd will show you the structure of $request->userData and $request->orderData so you can further use this data. I don't know the structure of those, but we can pretend the name key exists with $request->userData['name'] for example key access.

ie: var_dump($request->orderData);

A side note that the axios could be shortened to

axios.post(`${process.env.REACT_APP_API_URL2}mail`, {orderData, userData}).then...
  • Related