Laravel属于任意关系,使用关系中的两个模型保存额外的列

Laravel属于任意关系,使用关系中的两个模型保存额外的列,laravel,has-and-belongs-to-many,Laravel,Has And Belongs To Many,我尝试构建表单来创建发票,然后生成pdf 我的数据库结构 表: --发票包含日期|发票编号|客户id --文章包含名称|描述|价格 --物品发票包含发票id |物品id |数量*(数量)* 使用归属关系保存商品id和发票id 我的发票管理员 public function store(Request $request){ $qte = $request['qte']; $request = $request['fields']; $facture

我尝试构建表单来创建发票,然后生成pdf

我的数据库结构

表:

--发票包含日期|发票编号|客户id

--文章包含名称|描述|价格

--物品发票包含发票id |物品id |数量*(数量)*

使用归属关系保存商品id和发票id

我的发票管理员

  public function store(Request $request){
      $qte = $request['qte'];
  
      $request = $request['fields'];

      $facture = Facture::create(['date'=>'2018-08-22', 'facture_num'=>'4','client_id'=>'6']);

      $facture->article()->sync($request);

      $facture->article()->update($qte);

  }
我的观点

<div class="controls">
    {!! Form::open(array('route' =>'factures.store' ,'method'=>'post','enctype'=>'multipart/form-data')) !!}
    <div class="entry input-group col-md-6">
        <select class="form-control" name="fields[]" type="text" placeholder="Type something">
            @foreach($articles as $article)
                <option value="{{$article->id}}">{{ $article->designation}}</option>
            @endforeach
        </select>
        <input type="number" name="qte[]">

        <span class="input-group-btn">
            <button class="btn btn-success btn-add" type="button">
                <span class="glyphicon glyphicon-plus"></span>
            </button>
        </span>
    </div>
    <br>
</div>
</div>

<button type="submit" class="btn btn-primary btn-sm">
        <i class="fa fa-dot-circle-o"></i> Submit
</button>
{!! Form::close() !!}

{!!Form::open(数组('route'=>'factures.store','method'=>'post','enctype'=>'multipart/Form data'))
@foreach($articles作为$article)
{{$article->designation}
@endforeach

提交 {!!Form::close()!!}

**在同步文章之后,我想保存qte。有什么帮助吗**

您可以传递额外的列,如->
$facture->article()->sync([$request,$extra_columns])

解决方案:

控制器:

 $data = Input::get('qte'); // get input qte ( extra column )
 $fields = Input::get('fields'); // get input ( Ids Of articles )

 $syncData = array();

  for ($i=0;$i<count($fields);$i++){

      $syncData[$fields[$i]] = array('qte' => $data[$i]);

  }

  $facture->article()->sync($syncData);

SQLSTATE[42S22]:未找到列:1054“字段列表”中的未知列“0”(SQL:插入到
article\u facture`(
article\u id
facture\u id
0
1
)值(0,8,7,8))`写入要同步的列的名称
array:3 [▼   
         7 => array:1 [▼                    // " 7 " is article Id
                       "qte" => "4"   ]    //qte is the extra column.
         8 => array:1 [▼
                       "qte" => "10"   ] 
         10 => array:1 [▼
                        "qte" => "250"   ] ]