我要一起去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
)为前缀的字段,因此不可能混淆。