Laravel,Eloquent

时间:2016-09-22 12:20:55

标签: php mysql postgresql laravel-5.2

我真的需要帮助解决我遇到的这些重大问题。 我有树桌:

公司:

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关联的所有公司。 我试图使用相同的代码但是没有成功。

任何帮助将不胜感激。

1 个答案:

答案 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