使用枢轴Laravel 5.3中的Id删除多对多

时间:2017-01-12 05:03:38

标签: laravel

我的产品型号

class Product extends Model
{

public function transaction(){
        return $this->belongsToMany('App\Transaction', 'product_transaction', 'product_id', 'transaction_id')
            ->withPivot('price', 'qty', 'discount_amt', 'product_total')->withTimestamps();
    }

}

我的交易模型

class Transaction extends Model
{

    public function products(){

        return $this->belongsToMany('App\Product', 'product_transaction', 'transaction_id', 'product_id')
            ->withPivot('price', 'qty', 'discount_amt', 'product_total')->withTimestamps();
    }
}

使用product_id删除我的代码

public function deleteProducts( $transId, $productId ){

    $trans = Transaction::find( $transId);
    $trans->products()->detach( $productId );
}

它完成分离的工作...... 问题是(见照片)我有一个重复的transaction_id和product_id与不同的数量。如果使用我的分离它删除两者。我想使用pivot id。怎么做。

enter image description here

1 个答案:

答案 0 :(得分:1)

我能够使用

解决这个问题
$trans = Transaction::find( $transId);
$trans->products()->newPivotStatementForId( $productId )->where('id', $pivotId)->delete();

感谢此网站https://www.drukhost.com/2015/05/conditionally-deleting-rows-from-pivot-tables-many-to-many-laravel/