2013-12-19 3 views
1

У меня есть 3 таблицы:Laravel таблица отношение

users 
leads 
users_leads 

On users стола:

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

leads On таблица:

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

On 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 

как я выполнить запрос с использованием красноречивый ОРМ. Чтобы получить все руководство, которое принадлежит конкретному пользователю?

Любой может помочь? Благодарю.

ответ

3

Вам нужно многие ко многим:

В вашей модели пользователя:

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

+0

как я обрабатывать $ приводит в Еогеасп() цикл? @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; 
Смежные вопросы