数据库-ORM操作,依赖\x\Db
组件实现。
join()
:方法用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
join通常有下面几种类型,不同类型的join操作会影响返回的数。
INNER JOIN: 左右表有匹配,则返回组合行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行(默认的JOIN类型)
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
同时注意:join()
语句中默认不需要添加表前缀,框架会自动读取配置文件中的前缀设置。
例如:
$Db = new \x\Db();
$Db->name('user')->alias('A')->join('user_data B','B.user_id=A.id')->select();
// 当然你也可以这样写
$Db->name('user AS A')->alias('A')->join('user_data B','B.user_id=A.id')->select();
最终生成的SQL语句类似于:
SELECT * FROM sw_user A LEFT JOIN sw_user_data B ON B.user_id=A.id;
注意:join()
默认的链表方式是LEFT JOIN
。
例如:
$Db = new \x\Db();
// 使用inner方式
$Db->name('user')->alias('A')->join('user_data B','B.user_id=A.id', 'inner')->select();
最终生成的SQL语句类似于:
SELECT * FROM sw_user A INNER JOIN sw_user_data B ON B.user_id=A.id;
例如:
$Db = new \x\Db();
// 手动指定表前缀
$Db->name('user')->alias('A')->join('diy_user_data B','B.user_id=A.id', 'inner', false)->select();
最终生成的SQL语句类似于:
SELECT * FROM sw_user A INNER JOIN diy_user_data B ON B.user_id=A.id;