现在有两张表:
表1(ProjectTax)中包含字段
id, category_id
表2(TaxCategory)中包含
id, category_name
我想在查询表1的时候,同时将表2的category_name字段包含到查询结果里来。
在表1的模型中,我新增了关联定义:
public function taxCategory()
{
return $this->hasOne(TaxCategory::class, "id", "category_id");
}
然后在控制器中查询:
$data = ProjectTax::with('taxCategory')->where('project_id', $id)->select();
return json($data);
得到的结果如下,taxCategory这个字段把关联表的所有字段都给包含进来了(id, tax_name, sort_id)
请问怎么做才可以让taxCategory这个字段只包含tax_name字段的值呢?
我理想的返回结果是
……
taxCategory: "增值税"
……
或者,如果能把taxCategory显示为tax_name/category_name这样更好了
……
category_name: "增值税"
……
再简单一点说,就是让taxCategory包含的是关联表的某个字段,而不是整个表。
我尝试过修改表1模型的关联方法(taxCategory()):
return $this->hasOne(TaxCategory::class, "id", "category_id")->field('tax_name');
如果这样的话,返回值里的taxCategory就是null了。
return $this->hasOne(TaxCategory::class, "id", "category_id")->field('id,tax_name');
如果上面这样加上id字段,则可以成功返回值,但是跟一开始的问题一样,返回值taxCategory依然是个包含2个字段的对象。
请有经验的大佬指点一下,Thanks♪(・ω・)ノ
搞定了,修改表1的关联方法:
这样返回的结果为:

关联表的tax_name字段被绑定添加到了父模型中,完美解决了我的问题。
参考官方文档:一对一关联/绑定属性到父模型https://www.kancloud.cn/manua...