关于多列一对多显示问题表china_areaidparent_idcodename10100000中华人民共和国模型定义类ChinaAreaextendsModel{protected$table='china_area';//定义模型对应的数据库表名public$timestamps=false;//关闭自动添加创建时间和更新时间publicparent(){//参数列表为:模型(ChinaArea::class)、外键列名(parent_id)、本地键列名(id)return$this->belongsTo(ChinaArea::class,'parent_id');}...}tabledemo_addressesidnamemobileprovince_idcity_iddistrict_idaddress1xiaoming1337033xxxx370000370100370102中铁财智中心模型定义类AddressextendsModel{protected$table='demo_addresses';//定义模型province//省协会对应的数据库表名{return$this->belongsTo(ChinaArea::class,'province_id','code');}//城市协会publicfunctioncity(){return$this->belongsTo(ChinaArea::class,'city_id','code');}//分区关联publicfunctiondistrict(){return$this->belongsTo(ChinaArea::class,'district_id','code');}}数据表格网格的列显示//本表格列Display$grid->column('name',__('ContactName'));//关联数据显示$grid->column('province.name',__('Province'));//合并多个列显示$grid->column('Area',__('Area'))->display(function(){return$this->province->name.'-'.$this->city->name.'-'.$this->district->name;});Details详细数据展示//默认模型查询//$show=newShow(Address::findOrFail($id));//显示关联列对于数据,必须重新定义模型查询$address=Address::with('province')->with('city')->with('district')->findOrFail($id);$show=newShow($address);//本表数据的展示$show->field('name',__('ContactName'));$show->mobile(__('ContactPhone'));//显示关联列出数据时,必须重新定义模型查询$show->field('anyName',__('Area'))->as(function(){return$this->getRelation('province')->name.'-'.$this->getRelation('city')->name.'-'.$this->getRelation('district')->name;});
