【问题标题】:Laravel model association adviceLaravel 模型关联建议
【发布时间】:2014-09-05 20:12:16
【问题描述】:

今天的第二个关联问题,抱歉。

我有一个用户模型和一个商店模型。一个商店有很多用户,一个用户属于一个商店。这种关联很容易。

但是,我想在用户和商店之间建立第二个关联。一个 Store 有一个经理,一个 User 可以是多个 Store 的经理。商店有一个称为经理的字段。所以我希望能够做这样的事情:

$store = Store::find($storeId);
echo $store->manager->first_name . " " . $store->manager->last_name;

我不确定如何建立这样的关联。 Store 有一个名为 manager 的字段,它与 User 模型中的 user_id 字段匹配。这是我尝试过的:

店铺型号:

public function manager() {
    return $this->hasOne('user', 'manager', 'user_id'); //tried belongsTo as well...
}

我不确定如何指定它应该加入的字段。我的理解是它应该将商店中的“经理”与用户中的“user_id”匹配,但我的理解似乎不正确,哈哈。

...我不需要经理模型,对吗?希望不会……

编辑:根据安东尼奥的建议:

店铺型号:

public function manager() {
    return $this->hasOne('user', 'user_id', 'manager');
}

用户模型:

public function managerOf() {
    return $this->belongsToMany('store', 'stores', 'manager', 'user_id');
}

但这仍然给我一个“尝试获取非对象的属性”错误...

echo $store->manager->user_id;

【问题讨论】:

  • 如果你这样做dd($store->manager)会得到什么?
  • 这里似乎有一些相互矛盾的信息。你能进一步解释一下a User belongs to a Storea User can be the manager of many stores
  • @AntonioCarlosRibeiro 返回:字符串 'mrowland' (length=8)
  • @user3158900 用户在商店工作。但是,用户可以具有不同的角色,包括经理。一个用户可以是许多商店的经理。商店有一个字段“经理”。
  • 已编辑以提供有关它的更多信息。

标签: php laravel associations model-associations


【解决方案1】:

可能在您的商店模型中:

public function managerRelation() 
{
    return $this->hasOne('user', 'user_id', 'manager');
}

对于那些列

users->user_id
stores->manager

在您的用户模型上

public function managerOf() 
{
    return $this->belongsToMany('store', 'stores', 'manager', 'id');
}

您应该考虑将_id 添加到您的所有 id 列,例如 manager_id。

编辑:

另一个问题是manager 已经是你表中的一列,所以你的关系不能是manager(),或者你必须到manager_id 的列。我暂时将其重命名为managerRelation,所以您应该可以:

echo $store->managerRelation->user_id;

【讨论】:

  • 我已根据您的建议更新了我的问题。不幸的是,似乎没有帮助。不知道现在出了什么问题。
  • 啊哈,说得有道理。我不确定它是否有效,因为现在我遇到了另一个有趣的错误“达到了 '100' 的最大函数嵌套级别,正在中止!”。完全不明白,哈哈。稍后我将不得不回到这一点。感谢您迄今为止的所有帮助!
  • 您现在有一个递归,它超过了 100 个嵌套级别。但我真的不知道它会在哪里。如果您执行dd($store->managerRelation),您仍然会收到此错误吗?
  • 我正在处理的数据库在周末消失了,所以我想我不能再寻求帮助了,哈哈。显然我们正在使用不同的数据库。非常感谢,我会将您的答案标记为已接受的答案,然后继续我的生活,哈哈。
猜你喜欢
  • 2018-10-27
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多