【问题标题】:Laravel table relationshipLaravel 表关系
【发布时间】:2014-01-07 16:18:38
【问题描述】:

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

关于模型/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;

Laravel 抛出这个错误:

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

如何使用 eloquent ORM 运行查询。获取属于特定用户的所有潜在客户?

有人可以帮忙吗?谢谢。

【问题讨论】:

    标签: php database laravel-4


    【解决方案1】:

    你需要多对多的关系:

    在您的用户模型中:

    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;
    

    重要:

    此关系需要三个数据库表:usersleadslead_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

    【讨论】:

    【解决方案2】:

    如果您想获得所有用户线索:

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

    为了获取特定用户的数据,您应该通过 ID 引用它:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-22
      • 2014-05-08
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      • 2015-01-01
      相关资源
      最近更新 更多