开发文档 v2.x

联表

更新时间:2024年2月26日 14:36 浏览:443

表模型 提供了以下几种常用的联表操作

 

leftJoin 左联接

public function leftJoin(string $table, string $on): Table

参数:

  • string $table - 表名
  • string $on - 联接条件

返回值:

  • Table - 表模型本身

 

代码示例:

Be::getTable('user')
  ->leftJoin('user_role', 'user.role_id = user_role.id')
  ->getObjects('user.id, user.name, user_role.name AS role_name');

以左表(user)记录为主,右表(user_role)匹配不上的赋 null 值

 

rightJoin 右联接

public function rightJoin(string $table, string $on): Table

参数:

  • string $table - 表名
  • string $on - 联接条件

返回值:

  • Table - 表模型本身

 

代码示例:

Be::getTable('user')
  ->rightJoin('user_role', 'user.role_id = user_role.id')
  ->getObjects('user.id, user.name, user_role.name AS role_name');

以右表(user_role)记录为主,左表(user)匹配不上的赋 null 值

 

innerJoin / join 内联接

public function innerJoin(string $table, string $on): Table
public function join(string $table, string $on): Table

参数:

  • string $table - 表名
  • string $on - 联接条件

返回值:

  • Table - 表模型本身

 

join 是 innerJoin 的简写函数,返回左右表都存在的行。

 

代码示例:

Be::getTable('user')
  ->innerJoin('user_role', 'user.role_id = user_role.id')
  ->getObjects('user.id, user.name, user_role.name AS role_name');

 

fullJoin 全联接

public function fullJoin(string $table, string $on): Table

参数:

  • string $table - 表名
  • string $on - 联接条件

返回值:

  • Table - 表模型本身

 

左表或右表中存在即返回该行,MySQL 不支持。MSSQL 和 Oracle 下有效。

 

代码示例:

Be::getTable('user')
  ->fullJoin('user_role', 'user.role_id = user_role.id')
  ->getObjects('user.id, user.name, user_role.name AS role_name');

 

crossJoin  交叉联接

public function crossJoin(string $table, string $on): Table

参数:

  • string $table - 表名
  • string $on - 联接条件

返回值:

  • Table - 表模型本身

 

交叉联接是笛卡尔积,MySQL 不支持。MSSQL 和 Oracle 下有效。

 

代码示例:

Be::getTable('user')
  ->crossJoin('user_role', 'user.role_id = user_role.id')
  ->getObjects('user.id, user.name, user_role.name AS role_name');

 

导航