我有一个奇怪的问题,我有两个表:用户和公司,它有很多关系:
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;
仍然可以获得我之前删除的公司以及如何解决此问题?
由于
答案 0 :(得分:1)
要从集合中删除项目,只需使用forget
,如下所示:
foreach ($user->companies as $key => $company) {
if($company->name == ""){
$user->companies->forget($key);
$company->delete();
}
}