2016-06-13 15 views
1

mit Laravel 5.2, ich habe zwei Modelle bestellen und Arbeiter (viele zu viele Beziehung) genanntLaravel viele zu viele Beziehungen synchronisieren(), wo

public function workers() 
{ 
    return $this->belongsToMany('App\Worker')->withTimestamps(); 
} 

und ..

public function orders() 
{ 
    return $this->belongsToMany('App\Order')->withTimestamps(); 
} 

die Pivot-Tabelle cantains Feld namens Zuweisung ID | Bestellnummer | worker_id | Zuordnung

ich synchronisieren müssen(), wo das Zuweisungsfeld zugewiesen wird ..

  $order->workers()->where('assignment','Reassigned')->sync($workers); 

, die nicht funktioniert ..

+0

Ich verstehe nicht, was ist der Inhalt der Variablen '$ workers' – Hammerbot

+0

Array aus der Anfrage –

+0

@HosMercury: Können Sie Ihr '$ worker'-Array anzeigen – geckob

Antwort

1

Wenn Sie Pivot-Variablen:

Beziehung, wenn Sie haben Pivot-Variablen:

public function workers() 
{ 
    return $this->belongsToMany('App\Worker')->withTimestamps()->withPivot('value', 'value2'); 
} 

$ Arbeiter Array:

$workers[$order_id] = [ 
    ... // your pivot variables 
    'value'   => $value, 
    'created_at' => $created_at, 
    'updated_at' => $updated_at, 
] 

Wenn Sie Pivot-Variablen senden und Array von Aufträgen ids

$order->workers()->where('assignment','Reassigned')->sync([1,2,3]); 

Bearbeiten nicht haben:

mit dem, wo clausule in einem Try neue Funktion

public function workersReassigned() 
{ 
    return $this->belongsToMany('App\Worker')->where('assignment','Reassigned')->withTimestamps()->withPivot('value', 'value2'); 
} 

Und nach:

$order->workersReassigned()->sync($workers); 
+0

Es funktioniert nicht .. Sie geben mir eine Idee über withPivot .. aber wo() -> sync() funktioniert nicht –

+0

Ich habe Abfrage-Generator verwendet, um es zu lösen, aber hoffe, elequent verwenden –

+1

Ich habe meine Antwort aktualisiert, versuchen Sie mit das wo in einer neuen Funktion – Sangar82

0

Sie wissen nicht, wird es funktionieren oder nicht (nicht verfügbar Test es jetzt), aber versuchen wherePivotmethod

$order->workers()->wherePivot('assignment', 'Reassigned')->sync($workers); 
+0

Funktioniert auch nicht –

+0

Haben Sie 'withPivot' zu Ihren Beziehungen hinzugefügt? 'return $ this-> belongToMany ('App \ Order') -> withPivot ('Zuweisung') -> withTimestamps();' – huuuk

+0

ja .. ich habe wie zuvor erwähnt –

Verwandte Themen