2017-08-28 51 views
0

來自巴西的問候。Laravel:sync();問題

我有這個品牌 - >車型 - >版本車鏈應用程序和版本有配件。 我嘗試同步在數據透視表()配件及版本,但我得到這個錯誤:

(1/1) BadMethodCallException 
Call to undefined method Illuminate\Database\Query\Builder::sync() 

這裏是Accssories(Opcionals)型號:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Opcional extends Model 
{ 
    public function versaos(){ 
    return $this->belongsToMany('App\Versao'); 
    } 
} 

這裏的版本型號:

​​

的HTML部分:

<div class="col-md-6"> 
     <label>De Série</label> 
     <select class="custom-select select-multi but-to-but" multiple="multiple" name="series[]"> 
      @foreach($opcionals as $opcional) 
      <option value="{{ $opcional->id }}">{{ $opcional->descricao }}</option> 
      @endforeach 
      </select> 
      <small id="textHelp" class="form-text text-muted">Comece a digitar</small> 
     </div> 

而存儲功能控制器:

... 
$versao->save(); 
$versao->opcionals()->sync($request->opcionals, false); 
... 

錯誤顯示我該陣列是好的,傳遞的值,我的意思是:

at Builder->__call('sync', array(array('77', '75', '76'), false)) 
in Builder.php (line 1254) 

樞軸表模式是:

id, opcionals_id, versaos_id 

任何人,請嗎?

+0

同步適用於多對多,而不是一對多的關係。 – Devon

回答

1

由於您使用的是hasMany而非belongsToMany,因此您在Versao :: opcionals上定義了一對多關係。

一對多關係沒有同步方法。基於其他模型,我會說你有這種關係定義不正確。

+0

太棒了!我讓這個傳球......在兩個模型上改爲belongsToMany,它工作的很好! –

+0

@Marcello Patto你已經做到了,非常感謝。讓我們刪除評論 –