2015-07-02 6 views
3

Есть ли способ использовать Eloquent для запроса сводной таблицы без наличия модели для этой сводной таблицы?Laravel 5: как запросить сводную таблицу с использованием Eloquent

Ситуация: пользователь может владеть несколькими предприятиями, а бизнес может принадлежать нескольким пользователям. У меня есть следующие таблицы для рассмотрения отношений «многие ко многим».

| users  | businesses | business_user | 
------------------------------------------- 
| id  | id   | business_id | 
| name  | name  | user_id  | 
| created_at| created_at | created_at | 
| updated_at| updated_at | updated_at | 

Моя User.php модель

public function businesses() 
{ 
    return $this->belongsToMany('App\Business')->withTimestamps(); 
} 

Моя Business.php модель

public function users() 
{ 
    return $this->belongsToMany('App\User')->withTimestamps(); 
} 

1- В мой контроллер, я пытаюсь запросить business_user (сводную) таблицу в подсчитайте количество предприятий, у которых есть идентификатор пользователя Auth.

select count(*) from business_user where user_id = Auth::user()->id() ; 

2- я пытаюсь запросить таблицу business_user (ось), чтобы получить название компании для каждой строки приведены в таблице business_user для этого идентификатора пользователя.

select business_user.business_id, businesses.name 
    from business_user 
    join businesses 
    on business_user.business_id = businesses.id 
where business_user.user_id  = Auth::user()->id() ; 

Я хотел бы запросить сводную таблицу с красноречивы, но я не могу получить правильный синтаксис. Мне нужна модель для этой таблицы business_user?

Некоторые из вас предпочитают не использовать Красноречивый вообще?

Благодаря резюме

ответ

2

Вам не нужно модель для сводной таблицы. Вещи, которые вы просите, довольно прямолинейны.

Количество предприятий, вошедшего в User имеет

echo \Auth::user()->businesses->count(); 

имя каждого бизнеса для текущего User

foreach(\Auth::user()->businesses as $business){ 
    echo $business->name; 
} 
+0

Спасибо человеку! Я не могу обойти этот синтаксис «Красноречивый». Я просто не понимаю, но ваш код работает! Большое спасибо sooo – user3489502

Смежные вопросы