如果你仔细查看我在Laravel 5项目中看到的图片,我已经成功授权,我的Laravel DebugBar在下面显示了默认的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
答案 0 :(得分:1)
这里有两种选择。扩展身份验证驱动程序并修改retrieveById
方法以返回公司名称以及用户详细信息,或者创建与Company
模型的关系,我猜测它是 one-to - 很多,公司可以有很多用户,而用户可以属于一家公司。我会选择后者,在这种情况下更有意义。
您可以通过运行以下来创建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 Models和Relationships的更多信息。