eloquent - 嵌套的 Eloquent 关系 - HasOneThrough 问题
问题描述
我有以下表格设置:
Product_variant
桌子
Product_variant -> id, name, code, image
Warehouse
桌子
Warehouse -> id, name, address
Product Variant Stock
桌子
Product_Variant_stock -> stock_id, warehouse_id, variant_id, stock_qty
现在,当我尝试访问产品变体信息时,我需要获取有关变体存储在哪个仓库中的信息。
我在ProductVariation模型中尝试过的内容:
public function warehouseName()
{
return $this->hasOneThrough(Warehouse::class, ProductVariantStock::class, 'warehouse_id', 'id');
}
上面没有按预期工作。任何帮助表示赞赏。
解决方案
laravel hasOneThrough 像这样工作
class ModelA extends Model
{
...
public function cModel()
{
return $this->hasOneThrough(
ModelC::class,
ModelB::class,
'model_a_id', // Key on B that relates to A
'model_c_id', // Key on C that relates to B
'a_id', // Key on A that relates to B
'b_id', // Key on B that relates to C
);
}
}
所以你的代码将是
public function warehouseName()
{
return $this->hasOneThrough(Warehouse::class, ProductVariantStock::class, 'variant_id', 'id', 'id', 'warehouse_id');
}
推荐阅读
- javascript - 如何用 MongoDB 中的另一个集合覆盖一个集合
- python-3.x - 在嵌入 tkinter 的 matplotlib 图中获取鼠标点击的坐标
- sql - 如何通过触发器更新/插入表的特定列
- django - Django权限根据分支ID
- javascript - 如何使用选项 api 在 vuejs 3 中使用搜索框制作选择下拉菜单?
- vb.net - 我需要将 label.Text 限制为最多 6 个整数
- reactjs - 我的模态没有在 React 中使用 Redux 正确切换?Redux,功能组件
- reactjs - 使用 firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL) 但是刷新时不会保留任何内容
- sql-server - SQL Server 报告 2 系列在同一张图表上
- node.js - 如何一次制作 600 个模式(拥有 600 个房间)