2015-02-23 54 views
0

我剛剛開始laravel5,但我還沒有見過像laravel4那樣的模型文件夾。 我的問題是。Laravel5:多對多的關係

1.模型文件夾駐留在laravel5中?

2. laravel5中處理manay關係有多少?

我有以下情況。

角色表 領域 id ROLE_NAME

用戶表 id 用戶名 電子郵件 密碼

透視表 ROLE_USER id role_id user_id

+0

請任何一個向我提供正宗的資源形式,其中,因爲我有項目,我需要將它升級到laravel5我可以開始laravel 5。 – user1875774 2015-02-23 11:17:18

+0

從4.2升級到5非常簡單:閱讀文檔http://laravel.com/docs/master/upgrade#upgrade-5.0只需記住爲控制器中使用的每個類添加「use namespace/class」。並且將命名空間添加到您的控制器也將有助於解決路由問題。 – maztch 2015-04-22 16:42:19

回答

0
  1. 沒有一個。型號位於App/文件夾中。因爲這是用戶模型所在的地方。創建你自己的文件夾來創建一個。
  2. 該文檔將涵蓋此內容,找到here。這將通過您的相關模型建立關係。

    public function roles(){ 
        return $this->belongsToMany('App\Role', 'Pivot_table_name', 'foreign_key', 'other_key'); 
    } 
    

請注意:幾乎一切被覆蓋的文檔中。

現在你有了你的關係,你可以在你的用戶模型中這樣稱呼它$user = User::with('roles')->find(1);這會迫切地將你的角色加載到你的模型上,並且可以像這樣訪問; $user->roles

該文檔還包含使用whereHas找到的方法here查詢關係。

0

您的應用程序模型應該是這樣>app/Model/Role.php

設置namespace App\Model;下的應用程序/型號的所有模型文件。

多對多的關係

user.php的

public function roles() 
{ 
    return $this->belongsToMany('App\Model\Role'); 
} 

作用。PHP

​​

現在你可以使用這樣的

$user = App\User::find(1); 

foreach ($user->roles as $role) 
{ 
    // 
} 
0

模型文件在app目錄。當您安裝新的laravel時,您應該在app目錄下看到一個User.php文件。

在你Role模型中,你應該定義一個函數:

public function users(){ 
    return $this->belongsToMany('App\User'); 
} 

在你User模型中,你應該定義一個函數:

public function roles(){ 
    return $this->belongsToMany('App\Role'); 
} 

如果你想獲得角色屬於用戶名:

foreach($users as $user){ 
    $roles = $user->roles; 
} 

如果你想獲得用戶在一個角色下:

$users = $role->users; 

foreach($users as $user){ 
    // 
} 

這些是「延遲加載」,只在您訪問它們時加載關係。

Here for more about model
Here for more about relationships