【问题标题】:Exclude all except specified attributes in query - Eloquent Laravel 4.2在查询中排除除指定属性之外的所有属性 - Eloquent Laravel 4.2
【发布时间】:2016-02-19 12:40:19
【问题描述】:

在 Laravel 4.2 中,以下 Eloquent 查询将删除数组中指定的属性。我想做一个类似的操作,默认情况下我排除所有属性,只包括数组中的属性。我怎样才能做到这一点?我怀疑答案可能与在运行查询之前在模型上定义自定义 $appends 数组有关,但我不知道该怎么做。

return MyModel::all()->each(function($row) {
    $row->setHidden([
        'attribute_1',
        'attribute_2'
    ]);
});

【问题讨论】:

    标签: arrays laravel-4 model attributes eloquent


    【解决方案1】:

    在你的模型中

    protected $excludedColumns = ['attr1', 'attr2'];
    
      public function scopeExcludeColumns($query) {
            return $query->select(array_diff(Schema::getColumnListing($this->table), $this->excludedColumns));
        }
    

    用途:

    $result = Model::excludedColumns()->all();
    

    另一种选择是通过以下方法在模型上设置 $hidden 属性

    protected $hidden = array('attr1','attr2');
    

    但只有在调用$result->toArray;$result->toJson(); 时才会从模型中排除此字段

    【讨论】:

      猜你喜欢
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      相关资源
      最近更新 更多