0
我現在正在爲此苦苦掙扎,但我無法弄清楚它是如何工作的。 laravel我有一些關係模型。我不希望基於登錄用戶和工作區的傳遞參數來創建帳戶。如何在laravel中創建一排關係?
這是模型的樣子:(我只coppied方法來保持短)
用戶模型:
class User extends Eloquent implements UserInterface, RemindableInterface {
public function workspaces()
{
return $this->hasMany('Workspace', 'user_id');
}
public function account()
{
return $this->hasManyThrough('account', 'Workspace', 'id', 'workspace_id');
}
}
工作空間模型:
class Workspace extends Eloquent implements UserInterface, RemindableInterface {
public function account()
{
return $this->hasMany('account', 'workspace_id', 'id');
}
public function user()
{
return $this->belongsTo('User', 'user_id', 'id');
}
}
賬戶型號
class account extends Eloquent implements UserInterface, RemindableInterface {
public function account_url()
{
return $this->hasOne('acountUrl', 'id', 'account_url_id');
}
public function workspace()
{
return $this->belongsTo('Workspace', 'workspace_id', 'id');
}
}
的account_url模型
class account_url extends \Eloquent implements UserInterface, RemindableInterface {
public function account()
{
return $this->belongsToMany('account', 'id', 'account_url_id');
}
}
所以我從與account_urls登錄的用戶與特定的工作空間中所有帳戶 是這樣想:用戶> workspace->帳戶 - > account_url
我嘗試下面的東西,但它不工作:
$account_urls = user::find(Auth::user()->id)->first()->workspaces()->where('id', '=', 1)->account()->account_url()->select('url')->get();
和:
$account_urls = account::where('workspace_id', '=', '1')->account_url()->select('url')->get();
只有當我不喜歡這樣寫道:
$account_urls = account::find(1)->account_url()->select('url')->get();
但後來我只得到1個URL,但是當我replase發現(1)所有()我得到一個錯誤?
有人能幫助我嗎?
坦克,
tnx爲您的重播,我幾乎得到它, 您的代碼的作品,但現在我只得到1個網址,因爲我得到第一個工作區。但有可能我在一個工作區有多個帳戶。我應該怎麼做? 我以爲我應該把第一個()換成all(),但後來我得到一個錯誤? – 2014-11-22 15:33:40
你不能得到所有'accountUrl's,因爲它是一個'Accounts'的集合。取而代之的是'first'去'get',它會返回集合,然後使用'foreach'來獲得url。並閱讀文檔,他們幾乎都是你需要的.. – 2014-11-22 17:29:35
好的tnx的幫助! – 2014-11-22 17:54:23