2014-09-05 54 views
0

當天的第2協會問題,抱歉。Laravel模特協會諮詢

我有一個用戶模型和商店模型。商店有許多用戶,用戶屬於商店。這種關聯很容易。

但是,我想在User和Store之間建立第二個關聯。一個商店有一個經理,而一個用戶可以是許多商店的經理。商店有一個叫做經理的字段。所以我希望能夠做到這樣的事情:

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

我不知道如何建立這樣的關聯。商店有一個名爲manager的字段,它與用戶模型中的user_id字段相匹配。以下是我已經試過:

Store模式:

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

我不知道如何指定哪些字段應該加入上。我的理解是,它應該在商店中與'user_id'中的'經理'匹配在用戶中,但我的理解似乎並不正確。

...我並不需要一個經理模式是吧?我希望不是......

編輯:安東尼奧的建議後:

Store模式:

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; 
+1

如果你做你這話是什麼讓DD($ store->經理)'? – 2014-09-05 20:38:04

+0

看來這裏有一些衝突的信息。你能否進一步解釋'用戶屬於Store'和'用戶可以有很多stores' – user3158900 2014-09-05 20:43:08

+0

經理@AntonioCarlosRibeiro返回此:字符串「mrowland」(長度= 8) – mrowland 2014-09-05 20:51:46

回答

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; 
+0

我已經使用您的建議更新了我的問題。不幸的是,似乎沒有幫助。不知道現在有什麼問題。 – mrowland 2014-09-05 20:50:22

+0

啊,這很有道理。我不確定它是否工作,因爲現在我得到另一個有趣的錯誤「最大功能嵌套級別爲'100'到達,中止!」。不明白,一切都大聲笑。我將不得不在稍後再回來。感謝您的所有幫助! – mrowland 2014-09-05 21:08:09

+0

你現在有一個遞歸,超過了100個嵌套層次。但我真的不可能在哪裏。如果你做'dd($ store-> managerRelation)'你仍然會得到這個錯誤? – 2014-09-05 21:10:53