tp5的关联预载入以及嵌套载入和限定字段
例如我现在有三个表,订单表、客户表、业务员表,他们三个的关系是订单->客户->业务员,都是一对一关系,我想在查出订单客户的信息的同时还想知道这个客户是哪个业务员签约的,为了避免字段冗余还需要限定字段,可以采用下面的方法:
$res = Order::with([ 'custom' => function ($q) { return $q->with([ 'salesman' => function ($q) { return $q->field('id,name,sex,age'); } ])->field('id,sale_id,name,sex,age'); } ])->find(1);
注意!!!:使用field限定查询字段的时候一定要把定义关联时候的关联外键带上,一定要带上!一定要带上!一定要带上!重要的事情说三遍
如果上面的sale_id没有带上的话,是查不出来salesman这个字段的,就因为这个问题折腾了半天~
查询出来大概是这样的
{"id": 1,"ordernumber":201808304567231345"custom": {"id": 10,"name": "王大锤","sex": "男","age": 32,"salesman": { "id": 3, "name": "小明", "sex": "男","age": 35, }}}