0

在我的应用程序中,我在两个不同的表和两个不同的列名上执行关键字搜索。我想组合 themovies.title和 thepeople.title以便我可以按字母顺序对它们进行排序。目前我合并我的两个查询,结果首先与电影一起返回,然后与人一起返回。

  public function get_from_keyword($keyword){

        $movie_query = $this->db
        ->select('id, title, release_year')
        ->from('movies')
        ->like('movies.title', $keyword)
        ->where('movies.id IS NOT NULL', null)
        ->get()
        ->result();

        $person_query = $this->db
        ->select('name, person_id')
        ->from('people')
        ->like('name', $keyword)
        ->get()
        ->result();

        $merged_queries = array_merge($movie_query, $person_query);
        return $merged_queries;

    }

我不确定是否需要动态更改SELECT查询中的列名之一以便将它们合并在一起。

4

1 回答 1

1

尝试使用“AS”来命名 movies.title 和 people.name 字段,如下所示:

   $person_query = $this->db
    ->select('name', 'MySortTitle') // AS
    ->select('person_id')
    ->from('people')
    ->like('name', $keyword)
    ->get()
    ->result();

电影查询也是如此:

    $movie_query = $this->db
    ->select('title', 'MySortTitle') // AS
    ->select('id, release_year')
    ->from('movies')
    ->like('movies.title', $keyword)
    ->where('movies.id IS NOT NULL', null)
    ->get()
    ->result();

然后按 MySortTitle 对合并后的数组进行排序。

于 2013-02-23T00:32:01.763 回答