2015-04-07 4 views
2

я не знаю, если это на самом деле, но это Возможное может выглядеть следующим образом:Laravel: поиск через отношения?

Схема:

User 
id, name, last_name, etc. 

Condition 
id, name 

User_Condition 
id, user_id, condition_id, active, start_date, end_date 

Я хочу, чтобы иметь возможность сделать что-то похожее на это: $user->conditions->active() или $user->conditions->active, где она возвращается любые строки/отношения, в которых активны = 1

ответ

1

Вы хотите, чтобы все активных условий в виде пользователя, верно?

Если да, то получите их по следующему запросу.

echo $user->conditions()->where('user_condition.active', true)->get(); 

Убедитесь, что вы делаете belongsToMany отношения в user model

public function conditions() 
    { 
     return $this->belongsToMany('App\Condition', 'user_condition'); 
    } 
0

Вы ищете фильтр with, также известный как Eager Load Constraints.

$user->with['UserCondition'=>function($query){ 
           return $query->whereActive(1); 
          } 
      ]; 

(Предполагая, что UserCondition связи была установлена ​​в User красноречивой модели).

Источник: http://laravel.com/docs/5.0/eloquent

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