【问题标题】:SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'tenant_id' in where clause is ambiguousSQLSTATE [23000]:违反完整性约束:1052 where 子句中的列 'tenant_id' 不明确
【发布时间】:2021-10-11 23:07:03
【问题描述】:

我正在尝试获取与 vendor_id 匹配的产品列表。表 Products 和 Vendors 具有多对多关系,因此我创建了一个包含 vendor_id 和 product_id 字段的数据透视表。

下面的 Eloquent 查询:

Product::with('brand','tax')
                ->has('vendors')
                ->where('vendor_id',$vendor_id)
                ->get();

虽然在查询中不可见,但我有一个特性 BelongsToTenant,它会自动将 ->where(tenant,tenant_id) 附加到每个模型,并且两个表都有字段tenant_id。我认为我收到此错误是因为模型(产品和供应商)中都存在此特征。我卡住了

【问题讨论】:

    标签: laravel eloquent many-to-many


    【解决方案1】:

    Where 子句不明确,因为products 表和组表vendors 具有vendor_id 列。如果您的查询中有多个相同的列,请提及表名:

    Product::with('brand','tax')
           ->has('vendors')
           ->where('products.vendor_id',$vendor_id)
           ->get();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 2021-08-16
      • 2022-08-18
      • 2021-02-05
      • 2019-10-03
      相关资源
      最近更新 更多