我有一个问题,这是我的控制器代码:
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'=>''];
}
这段代码创建了一个数组供以后使用,但我需要创建一个数组,该数组将列出所有国家的名称,并在第二列列出它们的代码,但在我的情况下,县代码与国家名称不在同一个表中(因此我有一个列为-Id和name的1.表,还有一个列为Id name country_Id的第二个表(子类别表),它们是通过关系联系起来的。如何使用上面的代码来处理这个问题?我国模式:
class Country extends Model {
public function countries()
{
return $this->hasMany(Sortname::class);
}
我的Sortname(国家/地区代码)型号:
protected $fillable = [
'country_id', 'title'
];
public function country()
{
return $this->belongsTo(Country::class);
}
所以在子类别表中有一列country_id,它作为国家代码名称的关系连接。谢谢你的帮助!:)
你可以像这样使用join
DB::表
在你写的部分
$countries=\DB::table('countries')代码>
由此,您也不需要编写foreach循环来生成数组