How to create query with twice a connection to a table in Laravel 5.3?(如何在 Laravel 5.3 中创建两次连接到表的查询?)
问题描述
我需要通过一个查询获得两个城市名称:
I need get two city names with one query:
例如:
城市表:
+---------+----------+
| Pana | Name |
+---------+----------+
| THR | Tehran |
| LON | London |
+---------+----------+
在模型中:from_city 是 THR,to_city 是 LON
In Model: from_city is THR and to_city is LON
public function scopePrintQuery($query, $id)
{
$join = $query
-> join('cities', 'cities.pana', 'flights.from_city')
-> join('cities', 'cities.pana', 'flights.to_city')
-> where('flights.id', $id)
->get([
'flights.*',
'cities.name as from_city'
??? for to_city?
]);
return $join;
}
现在,我需要在此查询中获取 from_city 名称和 to_city 名称.
Now, I need get from_city name and to_city name in this query.
该查询不适用于一张表中的两个连接!
The query does not work with two joins from one table!
如何创建这个查询?
推荐答案
使用直接的 SQL 你可以给每个连接的表一个别名 - 例如
With straight SQL you could give each joined table an alias - e.g.
SELECT flights.*
FROM flights as f
JOIN cities as fromCity on fromCity.pana = f.from_city
JOIN cities as toCity on toCity.pana = f.to_city
WHERE f.id = 3 --
对于 Eloquent,使用 select() 来指定选择字段.还可以使用 DB::raw() 来使用原始 SQL(例如给出一个表的别名,如 DB::raw('cities as toCity')
.
With Eloquent, use select() to specify select fields. Also use DB::raw() to use raw SQL (e.g. giving an alias to table like DB::raw('cities as toCity')
.
public function scopePrintQuery($query, $id)
{
$join = $query
-> join(DB::raw('cities as fromCity'), 'fromCity.pana', 'flights.from_city')
-> join(DB::raw('cities as toCity'), 'toCity.pana', 'flights.to_city')
-> where('flights.id', $id)
->select([
'flights.*',
DB::raw('fromCity.name as from_city')
DB::raw('toCity.name as to_city')
]);
return $join->get();
}
这篇关于如何在 Laravel 5.3 中创建两次连接到表的查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 Laravel 5.3 中创建两次连接到表的查询?
基础教程推荐
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- HTTP 与 FTP 上传 2021-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- 使用 PDO 转义列名 2021-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01