Laravel - 将数据保存为多对多关系

时间:2014-04-07 23:19:03

标签: php laravel pivot relationship eloquent

是否可以将多于id的数据保存到多对多的数据透视表中?

我的代码:

    public function lists() {
        return $this->belongsToMany('ShoppingList','shopping_list_ingredients','shopping_list_id','ingredients_id')
        ->withPivot(array('unit','amount'))
        ->withTimestamps();
}  

和副verca!
现在,我需要将其他数据添加到数据透视表中。

这是我的保存代码:

    $list = new ShoppingList;
    $list->user_id = Auth::user()->id;
    $list->title = Input::get('recipe_title');
    $list->save();
    $list->ingredients()->sync(Input::get('ingredient'));
    $list->push();  

和我的观看代码:

- {{$i->amount}} {{$i->unit}} {{$i->name}} - {{ Form::checkbox('ingredient[]', $i->id) }}<br/>  

现在我需要以某种方式传递&#34;金额&#34;和&#34;单位&#34;将每个ID放入控制器并进入枢轴。现在,它只保存ID。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

您必须使用附加功能。

$list->ingredients()->attach($ingredients->id,['unit' => $unit, 'amount' => $amount]);

答案 1 :(得分:0)

您可以尝试这样的事情:

$ingredientId = Input::get('ingredient');
$amount = 'some amount';
$unit = 'some unit';
$pivotData = array($ingredientId => array('amount' => $amount, 'unit' => $unit));

$list->ingredients()->sync($pivotData);

您也可以使用attach方法,阅读Laravel Website上的文档以获取更多信息。