2016-06-13 2 views
1

с Laravel 5.2, я 2 модели называется порядок и работник (многие ко многим)Laravel многие ко многим отношения синхронизации(), где

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

и ..

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

сводная таблица поле cantains под названием ID | order_id | worker_id | Назначение

мне нужно синхронизировать(), где поле назначение переназначен ..

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

, что не работает ..

+0

Я не понимаю, что содержание переменной '$ workers' – Hammerbot

+0

массив из запроса –

+0

@HosMercury: Можете ли вы показать свой массив' $ workers' – geckob

ответ

1

Если у вас есть шарнирные переменные:

Relationship если у вас есть сводные переменные:

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

$ рабочие массив:

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

Если вы не имеете шарнирные переменные и отправлять массив заказов идентификаторам

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

Edit:

Попробуйте с где clausule в новая функция

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

И после того, как:

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

Это не работает .. вы даете мне представление о withPivot .. но где() -> sync() не работает –

+0

Я использовал построитель запросов для его решения, но надеюсь использовать elequent –

+1

Я обновил свой ответ, попробуйте с где в новой функции – Sangar82

0

Не знаю, будет ли она работать или нет (не доступен тест это прямо сейчас), но попробовать wherePivotmethod

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

Также не работает –

+0

Вы добавили 'withPivot' в свои отношения? 'return $ this-> принадлежитToMany ('App \ Order') -> withPivot ('assign') -> withTimestamps();' – huuuk

+0

yes .. Я сделал, как упоминалось ранее, –