所以,在我的应用程序中,用户可以拥有多家公司,他可以拥有这些公司的记录。
我已经说明了以下方法
User.php
public function companies() {
return $this->belongsToMany(Company::class, 'companies_users', 'company_id', 'user_id');
}
Company.php
public function users() {
return $this->belongsToMany(User::class, 'companies_users', 'company_id', 'user_id');
}
在CompanyController我在创建时使用以下内容附加用户ID
public function store(StoreCompanyRequest $request) {
$company = \App\Models\Company::create($request->all());
$company->users()->attach(Auth::user()->id);
return redirect()->route('companies.index')->with('success','Company has been created successfully.');
}
数据透视表companies_users更新得很好
然而,当我列出或添加结果时,我只得到 1 家公司。
有人知道我做错了什么吗?
谢谢
问题是
companies
模型上的User
关系不正确。你应该交换user_id
和company_id
的位置,它应该工作。
public function companies()
{
return $this->belongsToMany(Company::class, 'companies_users', 'user_id', 'company_id');
}
作为一般规则,对于
belongsToMany
关系,第三个参数将具有您正在定义的模型的名称。例如,如果您正在定义 User
模型的关系,则第三个参数将为 user_id
提示
由于您的模型遵循 Laravel 命名标准,您也可以跳过第三和第四个参数,Laravel 会自行猜测。
public function companies()
{
return $this->belongsToMany(Company::class, 'companies_users');
}