【发布时间】:2017-02-04 20:04:20
【问题描述】:
我有一个transactions table,可以在其中存储payment 或plan 的多态关系。我似乎无法得到的是,当我更新现有事务并删除表单中的payment_id 或plan_id 时,如何从数据库中清除该关系。
插入(或更新)时,效果很好:
$payment->transactions()->save($transaction);
我尝试了很多东西,detach 方法不起作用,因为它不是多对多关系。
我的模型:
交易:
public function paymentable()
{
return $this->morphTo();
}
付款(和计划):
public function transactions()
{
return $this->morphMany(Transaction::class, 'paymentable');
}
有什么想法吗?
基本上我的问题是,当我对现有事务执行更新时,如果没有提交payment 或plan,如何清除paymentable_id 和paymentable_type?所以基本上,当 payment 或 plan 从表单中删除时。我不喜欢使用一些 RAW 查询。
【问题讨论】:
-
$payment->transactions()->delete();不适合你吗? -
这实际上从数据库中删除了整条记录,或者我做错了什么。将再次测试它。
-
根据 Laravel 文档 (https://laravel.com/docs/5.4/eloquent-relationships#updating-belongs-to-relationships),您可以使用 dissociate 方法取消链接您不需要的所有关系
-
不幸的是,这也不起作用,尝试过。只是说这是一种未知的方法。而且我在任何地方都找不到关于
detaching或disociating多态关系的任何信息。
标签: php laravel polymorphism relation detach