我有问题,这是我从Controller那里获得的代码:
public function searchResponse(Request $request){
$query = $request->get('term','');
$countries=\DB::table('countries');
if($request->type=='countryname'){
$countries->where('name','LIKE','%'.$query.'%');
}
if($request->type=='country_code'){
$countries->where('sortname','LIKE','%'.$query.'%');
}
$countries=$countries->get();
$data=array();
foreach ($countries as $country) {
$data[]=array('name'=>$country->name,'sortname'=>$country->sortname);
}
if(count($data))
return $data;
else
return ['name'=>'','sortname'=>''];
}
此代码创建一个数组供以后使用,但我需要创建一个数组,该数组将列出所有国家名称,并在第二列上列出其代码,但是在我的情况下,county_codes与国家名称不在同一表中(因此我有一个1.带列的表-ID和名称,以及另一个ID为country_id的表(子类别表),它们之间通过关系连接,如何使用上面的代码来处理? 我的国家/地区模型:
class Country extends Model {
public function countries()
{
return $this->hasMany(Sortname::class);
}
我的排序名(国家/地区代码)型号:
protected $fillable = [
'country_id', 'title'
];
public function country()
{
return $this->belongsTo(Country::class);
}
因此,在子类别表上,有列country_id与国家/地区代码名称相关联。谢谢你的帮助! :)
答案 0 :(得分:2)
您可以像这样使用加入
$countries=\DB::table('countries')->join('country_code','country_code.country_id','countries.id')->select('countries.name','country_code.sortname');
在您撰写的部分中
$countries=\DB::table('countries');
因此,您也无需编写foreach循环即可创建数组