【问题标题】:laravel eloquent: return model without dates/specific variablelaravel 雄辩:返回没有日期/特定变量的模型
【发布时间】:2017-09-03 20:15:28
【问题描述】:

是否有 buildIn 选项来获取没有另一列日期的模型? 像这样:

Mymodel::all() -> without('createdAt', 'id')

我可以在得到结果后处理结果并削减我不需要的东西。但我认为有可能得到我需要的结果,因为我可以做到 sql. 谢谢

【问题讨论】:

  • 你的用例是什么?您可以在->all(['x','y']) 中定义您需要的列,或者使用pluck() 之类的东西,尽管没有withoutexcept 方法。如果您只想过滤输出的变量并且您的输出是 json,@Vitalmax 的答案会很好。如果没有,您的问题并不清楚您真正需要它的用途。
  • 嘿,vitalmax 的回答很好。为我工作得很好。我不知道我可以使用 ->all(['a', 'b'])。很高兴知道。谢谢
  • pluck 有效,但如果我想选择不显示的内容,“隐藏”方法更好
  • Cool :) 请记住, hidden 仅适用于调用 toArray() 的输出。我想在你的情况下它可以工作,但是当你在某处的视图中输出模型时,这些字段会显示出来。

标签: laravel model eloquent


【解决方案1】:

如果您使用toArray(),则可以使用hidden 属性:

有时您可能希望限制属性,例如密码, 包含在模型的数组或 JSON 表示中。去做 所以,给你的模型添加一个 $hidden 属性:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = ['password'];
}

https://laravel.com/docs/5.4/eloquent-serialization#hiding-attributes-from-json

【讨论】:

  • 只有在使用 toArray() 方法时才有效
  • @Robert 谢谢,朋友。我已经更新了我的答案以使其更清楚。
猜你喜欢
  • 1970-01-01
  • 2016-09-27
  • 2021-08-11
  • 2015-07-09
  • 1970-01-01
  • 2018-07-05
  • 2020-02-18
  • 2018-01-14
  • 2015-08-15
相关资源
最近更新 更多