变更关系记录Laravel5.2

变更关系记录Laravel5.2,laravel,eloquent,laravel-5.2,Laravel,Eloquent,Laravel 5.2,我有以下问题,我有两个模型Level和Class:Level有关系classes(),然后在得到Level类之后: $level->classes 返回的数据如下所示: { “id”:1, “名称”:“类别1” }, { “id”:2, “名称”:“2类” } 现在我想放弃第2类,我尝试了这个方法,但不起作用: $ids=[2]; $classes=$level->classes; $classes=$classes->whe

我有以下问题,我有两个模型Level和Class:Level有关系classes(),然后在得到Level类之后:

$level->classes
返回的数据如下所示: { “id”:1, “名称”:“类别1” }, { “id”:2, “名称”:“2类” } 现在我想放弃第2类,我尝试了这个方法,但不起作用:

        $ids=[2];
        $classes=$level->classes;

        $classes=$classes->whereIn('id',$ids);

        $level->classes=$classes;

有什么建议吗

您可能可以使用渴望加载来完成您想要的任务。如果只需要一个级别,则必须在“')之后和“->get();”之前添加该级别的约束


您可能能够使用渴望加载来完成您想要的任务。如果只需要一个级别,则必须在“')之后和“->get();”之前添加该级别的约束


使用以下命令:
$level->classes()->其中('id',$id)->get()


这将返回关系类的一个实例,该实例具有普通查询生成器的所有方法。

使用以下方法:
$level->classes()->其中('id',$id)->get()


这将返回关系类的一个实例,该实例具有普通查询生成器的所有方法。

您想删除记录还是只返回$ids数组中的结果?我想返回$ids数组中的结果我想您可能需要一个
->get()
,在该
上,其中
。这将有助于解释什么是“它不工作”的确切含义。问题出在哪里?$classes有我想要的结果,但是当我试图更新级别类时,它总是保留原始数据以便理解,您想放弃id:2,但是
中的
$ids=[2]
方法将返回具有
id=2
的类。是吗?你想删除记录还是只返回$ids数组中的结果?我想返回$ids数组中的结果我想你可能需要一个
->get()
,其中
。这将有助于解释什么是“它不工作”的确切含义。问题出在哪里?$classes有我想要的结果,但是当我试图更新级别类时,它总是保留原始数据以便理解,您想放弃id:2,但是
中的
$ids=[2]
方法将返回具有
id=2
的类。不是吗?更具体地说,我有很多级别,每个级别有很多类,然后我有每个级别的ID要丢弃?在我的情况下,这不起作用更具体地说,我有很多级别,每个级别有很多类,然后我有每个级别的ID要丢弃?在我的情况下,这不起作用
$ids = [2];

$levels = Level::with(
    [
        'classes' => function ($query) use ($ids) {
            $query->whereIn('id', $ids);
        }
    ]
)->get();