2015-11-15 33 views
1

如果你通過,你可以在我的Laravel 5項目看到我已經成功授權與圖片我Laravel DebugBar顯示在下面默認的SQL:如何在Laravel 5上授權後修改默認sql?

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的實例。

您可以在Laravel文檔中閱讀有關Eloquent ModelsRelationships的更多信息。

+0

非常感謝。我選擇了第二個選項,這是解決問題的完美方法。我不知道有關雄辯的ORM – Rashad

+1

很高興能有所幫助。如果你是Laravel的新手,我建議你閱讀[快速入門幫助部分](http://laravel.com/docs/5.1/quickstart),如果你有時間,整個文檔,因爲它可以給你一個這個框架可以提供什麼。 – Bogdan

+0

是否有可能使用左連接合並這2個查詢? – Rashad