Laravel - 如何在sync()函数中为数据透视表传递不同的值

My form sends a $request->assets that I am able to sync using the following:

 $user->assets()->sync($request->assets === null ? [] : $syncData);

The complexity (not a problem) arises when I try to retrieve values from a serial number array that is sent back as $request->serialnumber

I have set up the serial numbers in such a way that the serial number array index corresponds to my id column in the assets table. E.g. if Mobile has a value of 1 in the database, it is located in $request->serialnumber[1], and for something that would have an id of 2, would be placed in $request->serialnumber[2] and so on.

I have done the following so far, in order to insert the correct serial numbers for the correct asset() relationship:

$serialData = [];
$pivotData = [];
$syncData = [];

//for every assigned asset, build an array of their serial numbers from the serial number array...
if(isset($request->assets))
{
   for($i = 0; $i<count($request->assets);$i++)
      $serialData[$i] = $request->serialnumber[$i];
}

//if some serials were set, use them for pivot data
if(count($serialData)>0)
{
   $filledArray = array_fill_keys($serialData,"serialnumber");
   $pivotData = array_flip($filledArray);
}

$syncData = array_combine($request->assets, $pivotData);

I know its a long drawn out way, so I'm wondering if there's an easier way to do this?