Laravel hasMany关系分离所有

Bio*_*s90 2 orm laravel eloquent

是否有一个简单的解决方案,可以通过模型上的hasMany Relation分离(不删除)所有相关模型?

例如,我有两个表:

  • 大学(编号,姓名)

  • 学生(ID,名称,college_id(可空))

在学院模型中,我定义了这种关系:

class College extends Model
{
    public function students()
    {
        return $this->hasMany('App\Student','college_id','id');
    }
}
Run Code Online (Sandbox Code Playgroud)

将当前所有大学生从学院中分离出来的最佳方法是什么(即,让该学院的所有学生都将他们的college_id设置为null)?

有没有一种简单的方法可以使所有学生脱离雄辩而脱离大学模式?

就像是

class College extends Model
{
    ...
    public function detachAllStudents()
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

PS已经读过这个问题Laravel hasMany detach,但是当我尝试将其应用于我的应用程序时出现错误

Imr*_*ran 8

是的,您可以按如下所示分离所有大学生。实际上,我们已经college_id在您的students表中,并且必须以college_id某种方式使它为null。在Eloquent中这不称为分离。detach有了many to many关系,这个词就来了。因此,让我们更新学生,看看它是否有效。

$college->students()->update(['college_id' => null);
Run Code Online (Sandbox Code Playgroud)

这样,您的方法可以完成如下:

public function detachAllStudents()
{
    $college->students()->update(['college_id' => null]);
}
Run Code Online (Sandbox Code Playgroud)

而已!