我有3张桌子:
users
leads
users_leads
在用户表上:
---------------
-- id | name --
-- 1 | doe --
-- 2 | joe --
---------------
在引线表上:
----------------
-- 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
在model / UsersLead.PHP上
class UsersLead extends Eloquent {
public function leads()
{
return $this->belongsTo('Lead');
}
}
在model / Lead.PHP上
class Lead extends Eloquent {
public function userslead()
{
return $this->hasMany('UsersLead');
}
}
然后我试着运行它:
$data = Lead::all()->userslead;
Undefined property: Illuminate\Database\Eloquent\Collection::$userslead
如何使用雄辩的ORM运行查询.获得属于特定用户的所有潜在客户?
有人可以帮忙吗?谢谢.
解决方法:
你需要多对多的关系:
在您的用户模型中:
class User extends Eloquent {
public function leads()
{
return $this->belongsToMany('Lead');
}
}
在您的Lead模型中:
class Lead extends Eloquent {
public function users()
{
return $this->belongsToMany('User');
}
}
然后从您的控制器:
利用多对多的关系.
$leads = User::find(1)->leads;
重要:
此关系需要三个数据库表:users,leads和lead_user. lead_user表派生自相关模型名称的字母顺序,并且应具有user_id和lead_id列.
参考:
http://laravel.com/docs/eloquent#many-to-many
迭代项目
foreach ($leads as $lead)
{
dd($lead);
}
更多信息: