php - 指定 Eloquent 模型上可以访问和查询哪些列

标签 php mysql laravel eloquent

我遇到以下问题,我正在从其他人那里访问数据库,但他没有授予我访问表中所有列的权限。所以现在当我像这样查询数据库时:

Client::get(1)

它会给我以下错误,这是预期的,因为它试图选择*,而这是不允许的。

SELECT command denied to user blabla

我知道您可以指定在查询本身上选择哪些列,但是有没有办法在模型本身上执行此操作?那么甚至不可能得到这个错误?类似的东西

$columns = ['col1', 'col2']

然后哪个将编辑这些查询以选择这些列而不是 *? 我在互联网上进行了搜索,但未能找到我需要的东西。如果不可能,你们有解决这个问题的方法吗?

最佳答案

您是否尝试过 Eloquent 的 $hidden 属性?通过将以下内容添加到模型中来指定您不想包含的列:

protected $hidden = ['col1', 'col2', 'etc'];

这通常用于隐藏密码和 token 列,我没有测试过它实际上完全停止调用该列,它可能仍然调用它,但只是排除数据,尽管如此,它值得尝试。

这里有更多信息:https://laravel.com/docs/5.4/eloquent-serialization#hiding-attributes-from-json

或者,只需将其添加到您的模型中来尝试这个小技巧:

    public function newSmallQuery()
{
    return Client::first(['Col1', 'Col2']);
}

然后只需调用此查询而不是 get(),它就会返回这些列。

关于php - 指定 Eloquent 模型上可以访问和查询哪些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44188940/

相关文章:

amazon-web-services - 在 EC2 实例上安装 Laravel

laravel - 调用数组的成员函数 move()

php - 是否建议在同一个请求类中编写插入/更新/删除授权代码?

php - Jquery 表中 undefined index /值

php - Stripe 结帐不会接受元数据

MySQL:主键的所有部分都必须为NOT NULL;如果您需要在键中使用 NULL,请改用 UNIQUE

php - 选择对 json 的多维数组进行查询

php - 关于根据另一组禁用一组复选框

php - filter_var 和验证整数值

mysql - 当我需要知道另一个表的外键值时,如何将数据插入到一个表中?