2015-11-15 4 views
1

Если посмотреть картинку, которую вы можете увидеть на моем проекте Laravel 5 я успешно авторизованы и мой Laravel DebugBar показывает по умолчанию SQL в поле ниже:Как изменить стандартный sql после авторизации на Laravel 5?

SELECT * FROM users WHERE users.id = 2 Limit 1 

Я искал способ изменить этот SQL после успешного разрешения , как это:

SELECT 
    u.*, c.companyName 
FROM 
    users u 
LEFT JOIN companies c 
    ON c.id = u.companyId 
WHERE 
    u.id = ? 
    LIMIT 1 

enter image description here

+0

Этот запрос возникает из системы Laravel Auth? Это означает, что вы используете 'Auth :: user' для получения сведений об аутентифицированных пользователях. – Bogdan

+0

@Bogdan, Да, этот запрос исходит из системы Laravel Auth. Поэтому я хочу отобразить название компании, используя это: 'Auth :: user() -> companyName' – Rashad

+0

Установили ли вы отношения? – lagbox

ответ

1

у вас есть два варианта здесь. Либо расширьте драйвер аутентификации и измените метод retrieveById, чтобы вернуть название вашей компании вместе с деталями пользователя, либо создать связь с моделью Company, которая, как я предполагаю, является один-ко-многим, у компании может быть много пользователей , в то время как пользователь может принадлежать одной компании. Я бы выбрал последний, который имел бы смысл в этом случае.

Вы можете создать Company модель, запустив:

php artisan make:model Company 

Затем вы можете добавить это к User модели, которая поставляется с системой аутентификации:

public function company() 
{ 
    return $this->belongsTo('App\Company', 'companyId'); 
} 

Теперь вы можете сделать следующее доступ к информации о компании для вашего аутентифицированного пользователя:

Auth::user()->company->companyName; 

Это потому, что когда вы вызываете Auth::user()->company, вы получаете экземпляр Company, который прикреплен к пользователю.

Вы можете прочитать больше на Eloquent Models и Relationships в документации Laravel.

+0

большое спасибо. Я выбрал второй вариант, и это очень хороший и простой способ решить проблему. Я не знал о Eloquent ORM – Rashad

+1

Рад помочь. Если вы новичок в Laravel, я предлагаю вам прочитать раздел справки [Quickstart Help Section] (http://laravel.com/docs/5.1/quickstart), и если у вас есть время, вся документация, поскольку она может дать вам отличное представление о том, что может предложить структура. – Bogdan

+0

Можно ли объединить эти 2 запроса с помощью левого соединения? – Rashad

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