【发布时间】:2020-02-11 12:30:50
【问题描述】:
我可能用错了措辞,但这是我试图弄清楚的内容的概要。
现在我有三个模型,User.php、Company.php 和 UserCompanies.php。基本上,我的用户表中的每个用户都有一个公司,来自公司表,它们通过我的 usercompanies 表链接,该表包含 user_id 和 company_id。在我的 UserCompanies.php 模型中,我喜欢这个,
class UserCompanies extends Model
{
use SoftDeletes;
protected $dates = ['deleted_at'];
/*
|--------------------------------------------------------------------------
| Use a centralized auth DB
|--------------------------------------------------------------------------
*/
protected $connection = 'mysqlauth';
protected $table = 'user_companies';
protected $fillable = [
'user_id', 'company_id', 'status',
];
/**
* Get the user that owns the usercompanies.
*/
public function user()
{
return $this->belongsTo(User::class)->withTrashed();
}
/**
* Get the company
*/
public function company()
{
return $this->belongsTo(Company::class)->withTrashed();
}
}
现在只需在我的控制器中说,我需要传递具有用户和公司的数据,我该怎么做?
/App/User::where('status', 'A')->get();
/App/Companies::where('status', 'A')->get();
//我如何处理 UserCompanies,如何在不使用 foreach 循环的情况下将其链接在一起?
【问题讨论】:
-
用户和公司是什么关系?
-
基本上,一个公司可以有很多用户,但一个用户只有1个公司。所以在 user 表中,我们不存储 company_id,因此我们使用 user_companies 表。 user_companies 表,存储 user_id 和 company_id
-
为什么不把 company_id 放在用户表中。关系只是一对多
-
建db结构的不是我哈哈。现在添加这种关系有点太晚了,因为我们现在有超过数万行..
-
也许你可以改成:一个用户有一个user_companies,一个公司有很多user_companies。