Laravel eloquent join 与三个表
Posted
技术标签:
【中文标题】Laravel eloquent join 与三个表【英文标题】:Laravel eloquent join with three tables 【发布时间】:2020-10-25 07:44:27 【问题描述】:我开始从事一个小型 Laravel 项目,我想加入三个表来获取客户组织,因为一个客户可以在多个组织中。
我有三个表:users
、organizations
、client_organizations
我如何获得用户 ID 等于 1 的客户组织,例如,使用 eloquent:
这是我的表格结构:
组织机构表:
public function up()
Schema::create('organizations', function (Blueprint $table)
$table->bigIncrements('id');
$table->string('organization_name');
$table->string('phone');
$table->string('fax');
$table->string('address');
$table->string('city');
$table->string('zipcode');
$table->string('website');
$table->string('linkedin');
$table->string('facebook');
$table->string('twitter');
$table->timestamps();
);
客户组织:
public function up()
Schema::create('client_organizations', function (Blueprint $table)
$table->bigIncrements('id');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->bigInteger('organization_id')->unsigned();
$table->foreign('organization_id')->references('id')->on('organizations');
$table->timestamps();
);
注意:我还有 Laravel Auth 附带的 Users 表。
【问题讨论】:
阅读Many to many关系 【参考方案1】:您不需要三个表,而您的案例有一个数据透视表。
return DB::table('client_organizations')
->join('organizations', 'organizations.id', '=', 'organization_id')
->where('user_id', 1)
->get([
'organizations.*'
]);
您可以将DB::table('client_organizations')
替换为client_organizations
表的型号名称。
【讨论】:
以上是关于Laravel eloquent join 与三个表的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent Join vs Inner Join?
Laravel Eloquent 关系——相当于 MYSQL “join”
Laravel Eloquent ORM 中的 join()->where()