如何使用添加的列作为查询正确更新数据透视表?

Posted

技术标签:

【中文标题】如何使用添加的列作为查询正确更新数据透视表?【英文标题】:How to Properly Update Pivot table using added column as query? 【发布时间】:2014-08-30 08:38:40 【问题描述】:

我有这个包含

的数据透视表

imei状态item_id

这是我的代码

  $update = Item::find($item_id)->workArea()->wherePivot('imei', '=', 3)->first(); 
  $update->pivot->status = 'Sold';
  $update->pivot->save();

Before the function execute:
IMEI     STATUS     ITEM-ID
3        Available     3
5        Available     3

Result:
IMEI     STATUS     ITEM-ID
3        Sold          3
3        Sold          3

What I need:
IMEI     STATUS     ITEM-ID
3        Sold          3
5        Available     3

这是我的关系

public function workArea()
    
       return $this->belongsToMany('WorkArea','item_work-area','item_id','work-area_id')->withPivot('imei','status');
    

这是过去与其他工匠的对话 http://laravel.io/forum/07-08-2014-proper-chaining-for-my-pivot-table-to-execute-pivot-update

【问题讨论】:

【参考方案1】:

这是当前版本 4.1 的错误

我所做的是进行原始查询而不是雄辩的 ORM,

 DB::table('item_work-area')
        ->where('imei', 11)
        ->update(array('status' => 'Sold'));

希望对那些需要使用添加的列作为参考来更新数据透视表的人有所帮助。

【讨论】:

啊!这么长时间以来我一直在尝试这样做,这是一个错误!谢谢 Taylor 自己说的 :)

以上是关于如何使用添加的列作为查询正确更新数据透视表?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用不同的列作为参考制作数据透视表?

Excle数据透透视表如何删除数据透视表

如何向多对多数据透视表添加额外的列

如何在 Excel 中使用带查询的 Access 数据库作为数据透视表

VBA代码在数据透视表旁边的列中向下拖动公式

如何使用特定表中的列作为我需要从中删除、插入或更新数据的表名