联表方法有一个on方法来指定多表之间关联的字段,但是只要数据表名主键名外键名只要符合默认的设定就可以省略on方法,使联表语句更加简练。

为了能使用默认设定,数据库字段名的设计最好符合以下2点。

1 表主键名为id

2 表外键名为表名+id,如user_id(建议表名为单数,不然用users_id挺别扭)

下面2个查询语句效果一致,但是前者省略了on方法,使用默认设定。

$db->user->with('post')->get($user_id)

$db->user->with('post')->on('id', 'user_id')->get($user_id)

在默认设定下with默认的on方法会用主表的id字段关联从表中的主表名+id的字段,而我们的使用场景又刚好符合这种设定,所以可以省略on方法。

如下示例,字段名虽符合默认设定,但是post表此处是主表,所以仍需要on方法指定关联字段。

$db->post->join('user')->on('user_id', 'id')->get($post_id)

results matching ""

    No results matching ""