如何在Laravel 5上授权后修改默认sql?

时间:2015-11-15 19:05:12

标签: laravel laravel-5

如果你仔细查看我在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

enter image description here

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 ModelsRelationships的更多信息。