如何使用透视值同步多个到多个?

时间:2015-02-07 20:35:59

标签: php laravel laravel-4 eloquent

class User extends \Eloquent {
 public function cards() {
       return $this->belongsToMany('Card','user_card')->withPivot('sort')->orderBy('user_card.order', 'asc');
    }

}

我可以通过$user->sync(Input::get("card_ids",[]))附加卡片然而我正试图弄清楚如何更新枢轴值“排序”为array_keys(Input::get("card_ids",[]))的值[基本上是用户的顺序提交他们的]

这可能是雄辩的吗?

1 个答案:

答案 0 :(得分:1)

同步数据透视列的语法是:

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

要实现这一点,您可以先使用array_flip切换键值,然后array_map以所需格式显示值:

$cards = Input::get('card_ids', []);
$cards = array_flip($cards);
$cards = array_map(function($sort){
    return array('sort' => $sort);
}, $cards);
$user->cards()->sync($cards);