首页 > 解决方案 > 在 Eloquent 中,有没有办法在关系查询中使用 sql 函数

问题描述

我正在使用 Laravel 在 Eloquent 中工作,并且我有一张名为invoices.

每张发票都有一个前缀来标识dealer id.

例如, 01-1234是来自 的发票dealer 0102-5678是来自 的发票dealer 02

更复杂的是,经销商的 id 不是01or 02,而是DEALER01or DEALER02

我想知道是否可以让这样的查询起作用,以便发票对象具有关联的经销商对象,​​而无需编写大量重复代码来循环发票并手动链接它们。

public function dealer() {
    return $this->hasOne(Invoice::class, 'dealerId', 'concat(\'DEALER\', substr(Invoice.invoice, 1, 2))')
}

以下是发票表结构中的一些字段:

发票 客户 日期
01-1234 1 2021-06-05
02-1235 2 2021-06-06

以下是经销商结构中的一些领域:

经销商编号 default_sales_acct
经销商01 某县 1234
经销商02 别的县 5678

在这种情况下,链接这两个表所需的唯一字段是dealerId 和invoice 的前两个字符。

标签: laraveleloquenteloquent-relationship

解决方案


推荐阅读