2013-12-19 56 views
1

我有3個表:Laravel表關係

users 
leads 
users_leads 

users表:

--------------- 
-- id | name -- 
-- 1 | doe -- 
-- 2 | joe -- 
--------------- 

leads表:

---------------- 
-- id | type -- 
-- 1 | house -- 
-- 2 | condo -- 
-- 3 | house -- 
---------------- 

users_leads表:

---------------------------- 
-- id | user_id | lead_id -- 
-- 1 | 1  | 1  -- 
-- 1 | 1  | 2  -- 
-- 1 | 2  | 3  -- 
---------------------------- 

然後,我有我的模型:

User.php 
Lead.php 
UsersLead.php 

型號/ UsersLead.php

class UsersLead extends Eloquent { 
    public function leads() 
    { 
     return $this->belongsTo('Lead'); 
    } 
} 

型號/ Lead.php

class Lead extends Eloquent { 
    public function userslead() 
    { 
     return $this->hasMany('UsersLead'); 
    } 
} 

然後我試圖運行它:

$data = Lead::all()->userslead; 
我怎麼用雄辯的ORM運行查詢

Undefined property: Illuminate\Database\Eloquent\Collection::$userslead 

Laravel引發此錯誤。獲取屬於特定用戶的所有潛在客戶?

任何人都可以幫忙嗎?謝謝。

回答

3

你需要多對多的關係:

在您的用戶型號中:

class User extends Eloquent { 

    public function leads() 
    { 
     return $this->belongsToMany('Lead'); 
    } 

} 

在你的領導模式:

class Lead extends Eloquent { 

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

} 

從控制器然後: 利用多對多的關係。

$leads = User::find(1)->leads; 

重要:需要這種關係

三個數據庫表:usersleads,並lead_userlead_user表格來自相關型號名稱的字母順序,並且應該有user_idlead_id列。

參考:

http://laravel.com/docs/eloquent#many-to-many

迭代項目

foreach ($leads as $lead) 
{ 
    dd($lead); 
} 

更多信息:

http://laravel.com/docs/eloquent#working-with-pivot-tables

+0

我如何處理$通向foreach()循環? @Anam – justin

+1

@justin,請點擊以下鏈接:http://laravel.com/docs/eloquent#working-with-pivot-tables – Anam

1

如果你想獲得的所有用戶導致:

$data = Lead::with('userslead')->get(); 

爲了獲取特定的用戶,你應該通過ID是指它的數據:

$data = Lead::find($id)->userslead;