我有3张桌子:
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
在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;
Laravel抛出了这个错误:
Undefined property: Illuminate\Database\Eloquent\Collection::$userslead
如何使用雄辩的ORM运行查询。获得属于特定用户的所有潜在客户?
任何人都可以提供帮助?感谢。
答案 0 :(得分:5)
你需要多对多的关系:
在您的用户模型中:
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;
重要:强>
此关系需要三个数据库表:users
,leads
和lead_user
。 lead_user
表来自相关模型名称的字母顺序,应该有user_id
和lead_id
列。
参考:
http://laravel.com/docs/eloquent#many-to-many
迭代项目
foreach ($leads as $lead)
{
dd($lead);
}
更多信息:
答案 1 :(得分:1)
如果您想获得所有用户线索:
$data = Lead::with('userslead')->get();
为了获取特定用户的数据,您应该通过ID来引用它:
$data = Lead::find($id)->userslead;