【问题标题】:Eloquent relationship with extra column与额外列的雄辩关系
【发布时间】:2015-01-23 09:19:46
【问题描述】:

我有以下数据库结构:

表地址:

id  
state -> state code
country -> country code

(上表结构不可更改)

表格国家:

id
code (unique)

表格状态:

id
country_id (id from countries table)
code (unique for country_id)

问题是 - 是否可以为状态定义 Address 模型关系?

如果我使用:

public function stateRel()
{
    return $this->belongsTo(__NAMESPACE__ . '\\State', 'state','code');
}

这显然行不通,因为如果我有 2 个州的代码相同(属于其他国家/地区),它将找不到正确的州。它还应该使用 addresses 中的 country 与州中的 country_id 进行比较,但要使其更复杂 country 不包含 id 而是来自 countries 表的代码。

【问题讨论】:

  • 你能创建一个数据库视图吗?

标签: php laravel laravel-4 eloquent laravel-5


【解决方案1】:

你尝试过对belongTo关系的约束吗?

public function stateRel()
{
    return $this->belongsTo(__NAMESPACE__ . '\\State', 'state','code')->where('country_id', $this->country);
}

【讨论】:

  • 我想表中没有country_id。此外,不适用于急切加载。
  • @JarekTkaczyk,关系在表格状态下完成,那里有国家 ID。是的,我认为您可以进行即时加载,$this->country 指的是每个模型国家
  • 1 它不适用于急切加载 - 这不是问题。 2 地址表上没有country_id,所以不能引用状态表上的country_id。这将需要两个表上的country_idcountry_code,这不是这里的情况,除非 OP 只是没有粘贴这个非常重要的细节......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多