我真的需要帮助解决我遇到的这些重大问题。 我有树桌:
公司:
id | owner_id | name | address
-------------------------------------
1 | 5 | Google | 25 St RD
2 | 5 | Yahoo | 36 Ave St
3 | 11 |Microsoft| 1 Ave St
4 | 5 | Amazon | 25 St NE
用户:
id | name | email | type
-------------------------------------
3 | Daniel | dn@gmail.com | customers
4 | Dave | vd@gmail.com | user
5 | Nancy | ncn@gmail.com | admin
6 | Robert | rb@gmail.com | user
user_companies
id | user_id |parent_id| company_id
-------------------------------------
1 | 3 | 5 | 2
2 | 3 | 5 | 2
3 | 11 | 5 | 3
4 | 3 | 6 | 1
问题:我需要返回与company_id 2关联的所有用户 这是我的代码,但它没有返回正确的数据。
$CompanyList = DB::table('users')
->leftJoin('user_companies', 'users.id', '=', 'user_companies.parent_id')
->join('companies', 'users.id', '=', 'companies.user_id')->where('company_id', '=', 5)
->get(['users.name', 'users.email', 'user_companies.user_id']);
注意:parent_id是创建公司记录的人员的ID。我用它 在其他地方。
问题二: 我有user_id 5,我需要返回与user_id 5关联的所有公司。 我试图使用相同的代码但是没有成功。
任何帮助将不胜感激。
答案 0 :(得分:0)
首先,你没有使用Laravel的Eloquent Relations,这只是旧学校的MySQL关系。
其次我不理解user_companies中的parent_id。如果公司有父母,您将在公司表中将其设置为不在关系表中的列。
您的关系表“user_companies”没有唯一键,因此前两个结果具有相同的结果。
在创建de数据库表之前确保规范化正常,然后阅读例如Laravel的文档:https://laravel.com/docs/5.3/eloquent-relationships#many-to-many