提问者:小点点

从两个不同的数据表中创建一个包含两个字段的数组


我有一个问题,这是我的控制器代码:

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,它作为国家代码名称的关系连接。谢谢你的帮助!:)


共1个答案

匿名用户

你可以像这样使用join

DB::表

在你写的部分

$countries=\DB::table('countries')

由此,您也不需要编写foreach循环来生成数组