删除Laravel 5.2中的关系关系

时间:2016-06-06 08:09:41

标签: php laravel eloquent

我试图删除模型关系的关系。如果这有意义吗?

$post->comments()->activities()->delete();

所以我的帖子模型有评论和评论有活动。每当我尝试执行此操作时,都会收到此错误:

Call to undefined method Illuminate\Database\Query\Builder::activities()

我知道这有效:

$post->load('comments.activities');

foreach ($post->comments as $comment) {
    $comment->activities()->delete();
    $comment->delete();
}

但我认为第一种解决方案看起来更清洁。有谁知道为什么这不起作用?感谢。

修改

Post模型中的关系方法(多态,因为帖子上有评论和评论评论)。

public function comments()
{
    return $this->morphMany('App\Models\Comment', 'commentable');
}

评论模型中的关系方法(多态,因为我在多个模型上使用活动)。

public function activities()
{
   return $this->morphMany('App\Models\Activity', 'subject');
}

2 个答案:

答案 0 :(得分:1)

尝试

$post->comments->activities()->delete();

当然,只有在两个模型上都有一对多关系

时,这才有效

答案 1 :(得分:0)

你在写作之前是否给过了表定义?

protected $table = 'posts';

你能详细说明一下你的问题吗?