2016-01-13 1 views
3

Я хочу список со всеми сообщениями пользователей, которые находятся под одной подписью. Поэтому у меня есть таблица подписки, таблица пользователя и столбец.laravel 5.2 область запроса с присоединением

Должности относится к пользователю и пользователям принадлежит к подписке.

Я прочитал на laravel.com, что могу работать с глобальными областями запросов.

SQL будет (я думаю):

SELECT * FROM posts INNER JOIN users ON posts.user_id = users.id INNER JOIN subscriptions ON users.subscription_id = subscriptions.id WHERE subscriptions.id = $subscription_id_of_user_that_is_logged_in 

Что я должен поставить в моем файле области видимости?

public function apply(Builder $builder, Model $model) { 
    return $builder->where(????); 
} 

Второй вопрос: это хороший способ «скрыть» сообщения от других пользователей другой подписки?

+1

Существует пакет, который делает именно это для вас: https://github.com/HipsterJazzbo/Landlord – jsphpl

ответ

3

Это должно сделать трюк:

$builder 
    ->join('users', 'posts.user_id', '=', 'users.id') 
    ->join('subscriptions', 'users.subscription_id', '=', 'subscriptions.id') 
    ->where('subscriptions.id', Auth::user()->subscription_id); 

Это хороший способ, чтобы скрыть сообщения от других подписок до тех пор, как вы всегда использовать методы сообщения вашей модели, чтобы загрузить сообщения, так как только тогда глобальный масштаб применены. Он не будет применяться, если вы будете обращаться к данным вручную, используя DB фасад.

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

  • Нет связанных вопросов^_^