【发布时间】:2020-11-10 18:44:13
【问题描述】:
我的问题是如何从 eloquent 模型中获取数据及其关系?
想象 3 张桌子:
用户:
| id | name | email |
|----|------|-----------------|
| 1 | name | email@email.com |
公司:
| id | name | user_id | address_id |
|----|------|---------|------------|
| 1 | name | 1 | 1 |
地址:
| id | zip | state |
|----|--------|-------|
| 1 | 101010 | LA |
还有关系:
Company.php
public function user()
{
return $this->hasOne(User::class);
}
public function address()
{
return $this->hasOne(Address::class);
}
User.php
public function company()
{
return $this->belongsTo(Company::class);
}
地址.php
public function company()
{
return $this->belongsTo(Company::class);
}
在这种情况下,我如何获得所有公司及其相关用户和地址?
Company::whereHas('users')->get(); 获取:
Illuminate/Database/QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.company_id' in 'where clause' (SQL: select * from `users` where `users`.`company_id` in (1, 2, 3, 4, 5))'
有什么想法吗?
谢谢
【问题讨论】:
-
一个公司应该有很多用户,一个用户应该至少属于一个公司。尝试在您的用户表中放置一个
company_id列,并用相应的公司 ID 填充该列。 -
问题在于,对于我的解决方案,我实际上并不需要公司的多个用户。在我的例子中,一个用户代表一家公司。
-
如果一个用户代表一家公司,为什么需要一个用户表和一个公司表?
-
所以在我的例子中是两种类型的用户。一个是普通用户,第二个是代表公司的用户。这就是为什么决定将所有用户存储在一张表中,而特定用户只填写公司表@adam
标签: php laravel eloquent relationship