【发布时间】:2019-06-15 00:01:37
【问题描述】:
我正在尝试从使用 Eloquent 连接的表中选择特定列。
我有 3 个模型 - 交易 - 渠道 - 商人
交易链接到频道。它有一个 hasOne 关系。 渠道链接到商家。它也有一个 hasOne 关系。
public function channel() {
return $this->hasOne(Channel::class, 'uuid', 'entityId');
}
public function merchant() {
return $this->hasOne('App\Merchant', 'uuid', 'sender');
}
我正在使用急切加载,因此在事务模型中有以下内容:
protected $with = ['channel'];
频道有:
protected $with = ['merchant']:
这是我试图转换为 Eloquent 的查询,但我不确定当它们属于相关模型时如何选择列。我不明白的是,如果已经定义了关系,为什么我不能从其他模型中选择列而不必重用连接或 with 子句?
SELECT SUM(t.amount) AS amount,
m.name
FROM transactionsV2 t JOIN
channels c
ON t.entityId = c.uuid JOIN
merchants m
ON c.sender = m.uuid
WHERE t.paymentType = 'DB' AND
t.status = 1 AND
t.processing_time >= '2019-01-01' AND
t.processing_time < '2019-01-21'
GROUP BY m.name;
【问题讨论】:
-
我见过这个,但我在模型中声明了“with”。为什么我需要在查询中再次声明它?
-
Laravel 使用多个查询来获取关系,它没有使用 JOIN 语句。这就是为什么您不能如此轻松地使用相关模型中的列
标签: laravel laravel-5 eloquent