我要一起去2个表,查询工作正常。但是,很难找出哪一行属于哪张表。

我有一个客户表和一个项目表。理想情况下,查询时我想添加一个名为type的字段并将其设置为客户端或项目。

我可以使用MySQL吗?

我正在使用laravel的querybuilder,这是我的查询。

 DB::table('clients')
        ->select(['clients.id', 'clients.name'])
        ->where('clients.organisation_id', '=', $organisation->id)
        ->where('clients.name', 'LIKE', "%$query%")
        ->join('projects', function($join) use ($query){
            $join->on('clients.id', '=', 'projects.client_id')
                ->select(['projects.id', 'projects.name'])
                ->where('projects.name', 'LIKE', "%$query%");
        })
        ->get()

最佳答案

Laravel doc提到您可以像在SQL中一样添加AS子句,因此应该可以:

 DB::table('clients')
        ->select(['clients.id AS client_id', 'clients.name AS client_name'])
        ->where('clients.organisation_id', '=', $organisation->id)
        ->where('clients.name', 'LIKE', "%$query%")
        ->join('projects', function($join) use ($query){
            $join->on('clients.id', '=', 'projects.client_id')
                ->select(['projects.id AS project_id', 'projects.name AS project_name'])
                ->where('projects.name', 'LIKE', "%$query%");
        })
        ->get()


这样,您最终会得到以表名(client_id vs project_id)为前缀的字段,因此不可能混淆。

09-27 21:31