微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Laravel表关系

我有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;

Laravel抛出这个错误

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);
}

更多信息:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐