Laravel Eloquent:有很多删除,需要刷新

时间:2017-10-30 08:52:03

标签: php laravel eloquent

我有一个奇怪的问题,我有两个表:用户和公司,它有很多关系:

 public function companies() {
    return $this->hasMany('App\Models\Company');
 }

我在公司表中删除了级联:

$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

但是现在我有一个奇怪的问题,出于某种原因,当用户想要创建公司时。当我点击"添加"按钮并返回编辑表单(因为我需要一个id来附加图片等)。

因此,如果用户点击"创建公司"并退出页面,我的数据库中有一个空行。

所以在我的用户公司索引中我做了:

public function company_index() {
    $user = auth()->user();

    foreach ($user->companies as $company) {
      if($company->name == "")
         $company->delete();
    }
    $companies = $user->companies;

    return view('front.users.company')->withCompanies($companies);
}

在我的数据库中正确删除了我的空名称公司,但$companies = $user->companies;仍然可以获取。如果我刷新它的工作。

我的问题是: 为什么$companies = $user->companies;仍然可以获得我之前删除的公司以及如何解决此问题?

由于

1 个答案:

答案 0 :(得分:1)

要从集合中删除项目,只需使用forget,如下所示:

foreach ($user->companies as $key => $company) {
    if($company->name == ""){ 
        $user->companies->forget($key);
        $company->delete();
    }
}