【发布时间】: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 Store和a User can be the manager of many stores -
@AntonioCarlosRibeiro 返回:字符串 'mrowland' (length=8)
-
@user3158900 用户在商店工作。但是,用户可以具有不同的角色,包括经理。一个用户可以是许多商店的经理。商店有一个字段“经理”。
-
已编辑以提供有关它的更多信息。
标签: php laravel associations model-associations