用两个不同的数据表中的两个字段创建一个数组

时间:2018-08-19 14:10:30

标签: php laravel

我有问题,这是我从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与国家/地区代码名称相关联。谢谢你的帮助! :)

1 个答案:

答案 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循环即可创建数组