ThinkPHP5中较复杂的多表联查

{{ time }}

比如, 我们首先有一个article表

id(主键)article_titlecategory_id(外键)author_idcreate_at
1What's your name?321577177414

然后, 我们有一个category表

id(主键)is_online(该分类是否上线, 1上线, 0下线)
31

我们要查询: article表中的文章,

1.它的作者id是2;

2.它的对应分类在分类表中是上线的;

3.按照article表中create_at排序.

所以查出来的结果长这样

idarticle_titlecategory_idcreate_at
1 What's your name? 3 1577177414

在ThinkPHP5中, 可以这样写

$data = db('article')
    ->alias('a') //给article表起一个别名
    ->join('category c', 'a.category_id=c.id AND c.is_online=1') //给category表也起个别名
    ->where('a.author_id', 'eq', 2)
    ->field('a.id,a.article_title,a.category_id,a.create_at')
    ->order('a.create_at')
    ->paginate(10);