仅雄辩地检索某些列

时间:2019-02-08 20:17:08

标签: laravel eloquent

简而言之。我一直在寻找某种方法,以便每次在laravel中查询模型时都不会检索某些列。可能吗?例如,具有以下内容:

Class User extends Model{
   ...
   protected $columns = ["name", "email"];
   ...

并且每次像User这样的查询User::get()都只返回名称和电子邮件地址

3 个答案:

答案 0 :(得分:1)

您正在寻找hidden

protected $hidden = ["values", "i", "want", "to", "hide"];

答案 1 :(得分:0)

您可以仅选择特定的列,而不使用 User :: get()

    $models = User::select('name', 'email')->get();

答案 2 :(得分:0)

您可以通过两种方式过滤列

方法1
在模型上使用protected $hidden=[]并列出您希望隐藏的变量。
该方法还会永久隐藏您的变量,如果您想再次访问变量,则必须直接调用它,例如:

$user=User::find(1);
$user->your_hidden_variable

检查Eloquent Serialization了解更多信息。

方法2 在获取/选择时传递一个数组

$user=User::select(["name","email"])->where("your","condition");

OR

$user=User::where("your","condition")->get(["your","fields"]);