Laravel 5: sincronización de un campo adicional mediante pivote

Modelo de usuario:

public function positions()
{
 return $this->belongsToMany('App\Position')->withPivot('company_id')->withTimestamps();

}

Modelo de posiciones:

public function users()
{
 return $this->belongsToMany('App\User')->withPivot('company_id')->withTimestamps();
}

En el envío del formulario tengo dos matrices:

$allPositionIds
array:3 [
0 => 98
1 => 99
2 => 100
]


$allCompanyIds
array:3 [
0 => 129
1 => 130
2 => 131
]

Utilizando

$user->positions()->sync($allPositionIds);

que sincroniza la tabla position_user como se esperaba con el usuario y los identificadores de posición correspondientes.

Sin embargo, no puedo resolver cómo llenar el campo adicional ('company_id')

Esto es algo de lo que esperaría que funcione:

$user->positions()->sync([$allPositionIds => ['company_id' => $allCompanyIds]], false);

He leído lamanual pero no veo cómo manejar estas matrices, ya que los ejemplos en el manual parecen relacionarse con una situación en la que el campo adicional que se debe llenar no es una matriz de elementos múltiples:

$user->roles()->sync(array(1 => array('expires' => true)));

He intentado usar estoresponder

para combinar las dos matrices:

$syncData = array_combine($allPositionIds,$allCompanyIds);

y obtener $ syncData de:

array:3 [
98 => 129
99 => 130
100 => 131
]

Que se asigna en consecuencia para posicionar la matriz de identificación y la matriz de identificación de la compañía, pero si intento

user->positions()->sync($syncData);

Yo tengo un"SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails" - I believe it is trying to add in the company_id as another position_user.position_id but then it errors out as that doesn't exist in the positions table.

Lo que sea que esté intentando en este momento, micompany_id el campo aún no se está actualizando / rellenando.

¿Qué estoy haciendo mal y cómo actualizo ese campo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta